$this->buildCaptchaQuestion($request, self::LOGIN_CAPTCHA_CONTEXT), ]); } public function login(Request $request) { $validated = $request->validate([ 'email' => ['required', 'email'], 'password' => ['required', 'string'], 'captcha' => ['required', 'string', 'max:10'], ]); if (!$this->captchaIsValid($request, self::LOGIN_CAPTCHA_CONTEXT)) { return back() ->withInput($request->only('email', 'remember')) ->withErrors(['captcha' => 'Неверный ответ на капчу.']); } $credentials = [ 'email' => $validated['email'], 'password' => $validated['password'], ]; $remember = $request->boolean('remember'); if (!Auth::attempt($credentials, $remember)) { return back() ->withInput($request->only('email', 'remember')) ->withErrors(['email' => 'Неверный email или пароль.']); } $request->session()->regenerate(); $this->clearCaptcha($request, self::LOGIN_CAPTCHA_CONTEXT); return redirect()->intended(route('account')); } public function showRegisterForm(Request $request) { return view('shop.auth.register', [ 'captchaQuestion' => $this->buildCaptchaQuestion($request, self::REGISTER_CAPTCHA_CONTEXT), ]); } public function register(Request $request) { $validated = $request->validate([ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'email', 'max:255', 'unique:users,email'], 'password' => ['required', 'confirmed', Password::defaults()], 'captcha' => ['required', 'string', 'max:10'], ]); if (!$this->captchaIsValid($request, self::REGISTER_CAPTCHA_CONTEXT)) { return back() ->withInput($request->only('name', 'email')) ->withErrors(['captcha' => 'Неверный ответ на капчу.']); } $user = User::create([ 'name' => $validated['name'], 'email' => $validated['email'], 'password' => $validated['password'], ]); Auth::login($user); $request->session()->regenerate(); $this->clearCaptcha($request, self::REGISTER_CAPTCHA_CONTEXT); return redirect()->route('account'); } public function logout(Request $request) { Auth::logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); return redirect()->route('home'); } }