middleware('guest')->except('logout'); } public function showLoginForm() { if(config('pixelfed.bouncer.cloud_ips.ban_logins')) { abort_if(BouncerService::checkIp(request()->ip()), 404); } return view('auth.login'); } /** * Validate the user login request. * * @param \Illuminate\Http\Request $request * * @return void */ public function validateLogin($request) { if(config('pixelfed.bouncer.cloud_ips.ban_logins')) { abort_if(BouncerService::checkIp($request->ip()), 404); } $rules = [ $this->username() => 'required|email', 'password' => 'required|string|min:6', ]; $messages = []; if( (bool) config_cache('captcha.enabled') && (bool) config_cache('captcha.active.login') || ( (bool) config_cache('captcha.triggers.login.enabled') && request()->session()->has('login_attempts') && request()->session()->get('login_attempts') >= config('captcha.triggers.login.attempts') ) ) { $rules['h-captcha-response'] = 'required|filled|captcha|min:5'; $messages['h-captcha-response.required'] = 'The captcha must be filled'; } $request->validate($rules, $messages); } /** * The user has been authenticated. * * @param \Illuminate\Http\Request $request * @param mixed $user * * @return mixed */ protected function authenticated($request, $user) { if($user->status == 'deleted') { return; } $log = new AccountLog(); $log->user_id = $user->id; $log->item_id = $user->id; $log->item_type = 'App\User'; $log->action = 'auth.login'; $log->message = 'Account Login'; $log->link = null; $log->ip_address = $request->ip(); $log->user_agent = $request->userAgent(); $log->save(); } /** * Get the failed login response instance. * * @param \Illuminate\Http\Request $request * @return \Symfony\Component\HttpFoundation\Response * * @throws \Illuminate\Validation\ValidationException */ protected function sendFailedLoginResponse(Request $request) { if(config('captcha.triggers.login.enabled')) { if ($request->session()->has('login_attempts')) { $ct = $request->session()->get('login_attempts'); $request->session()->put('login_attempts', $ct + 1); } else { $request->session()->put('login_attempts', 1); } } throw ValidationException::withMessages([ $this->username() => [trans('auth.failed')], ]); } }