Я впервые работаю с Laravel 5. Я работал с 4 ранее. Laravel поставляется с файлом AuthenticatesAndRegisterUsers.php, который обрабатывает большую часть материала и упрощает регистрацию и регистрацию пользователей.
Я хотел настроить этот файл в соответствии со своими собственными потребностями, например, не регистрировать пользователя и вместо этого отправлять им ссылку активации и проверять, активируется ли пользователь при входе в систему.
postLogin
public function postLogin(Request $request) { $this->validate($request, [ 'email' => 'required|email', 'password' => 'required', ]); $credentials = $request->only('email', 'password'); if ($this->auth->attempt($credentials, $request->has('remember'))) { if(!$this->auth->user()->activated) { $this->auth->logout(); return redirect($this->loginPath()) ->withErrors(['activated' => 'Your account is not activated yet. <br /> Please check your email for activation link.']); } return redirect()->intended($this->redirectPath()); } return redirect($this->loginPath()) ->withInput($request->only('email', 'remember')) ->withErrors([ 'email' => $this->getFailedLoginMessage(), ]); }
postRegister
public function postRegister(Request $request) { $validator = $this->registrar->validator($request->all()); if ($validator->fails()) { $this->throwValidationException( $request, $validator ); } $this->registrar->create($request->all()); return redirect($this->loginPath()) ->withErrors(['activated' => 'Activation link has been sent to your email address.']); }
Это работает как прелесть для меня, но позже я понял, что я отредактировал файлы поставщиков в соответствии с моими потребностями, поскольку этот файл находится внутри папки поставщика. И, конечно же, он не фиксирует контроль над версиями.
Поэтому мой вопрос заключается в том, как использовать систему аутентификации Laravel 5, но также подходит для моих нужд. Могу ли я каким-то образом расширить этот класс и переопределить методы, или мне придется полностью написать собственный класс?
Вы можете просто переопределить эти методы в AuthController
(или любом контроллере, который использует этот признак). Просто скопируйте обе функции, и вы хорошо пойдете.