middleware('guest')->except('logout'); } public function hasTooManyLoginAttempts($request){ $tries = (int)Cache::get('LOGINATTEMP_'.$request->get("username").$request->get("email")); if($tries > 5 ){ return true; } return false; } public function setAttemp($request){ $tries = (int)Cache::get('LOGINATTEMP_'.$request->get("username").$request->get("email")); $tries++; Cache::put('LOGINATTEMP_'.$request->get("username").$request->get("email"), $tries, 900); } public function resetAttempt($request){ Cache::delete('LOGINATTEMP_'.$request->get("username").$request->get("email")); } public function login(Request $request) { $this->validateLogin($request); $user = UniModel::model('core_users')->where('email', $request->email) ->orWhere('username', $request->email)->first(); if (!$user) { return view('platform.auth::login', ['error' => ['email' => trans('auth.email')]]); } if (!Hash::check($request->password, $user->password)) { return view('platform.auth::login', ['error' => ['password' => trans('auth.password')]]); } if (method_exists($this, 'hasTooManyLoginAttempts') && $this->hasTooManyLoginAttempts($request)) { return view('platform.auth::login', ['error'=>['email'=>trans('Превышено допустимое количество попыток, попробуйте через 15 минут')]]); } if ($this->attemptLogin($request)) { if ($request->hasSession()) { $companyId = Acl::getLastActiveCompany(Auth::id()) ? Acl::getLastActiveCompany(Auth::id()) : Acl::getDefaultCompanyId(Auth::id()); $request->session()->put('auth.password_confirmed_at', time()); $request->session()->put('user.company_id', $companyId); $request->session()->put('user.rights', Acl::getUserRights(Auth::id(),Acl::company_id())); $request->session()->put('user.segment', Acl::getSegment(Acl::company_id())); $request->session()->put('user.name', Auth::user()->name); $this->resetAttempt($request); } return $this->sendLoginResponse($request); } $this->setAttemp($request); // $this->sendFailedLoginResponse($request); return view('platform.auth::login', ['error'=>['email'=>trans('auth.failed')]]); } public function username() { $validator = Validator::make(['email' => request()->email], [ 'email'=>'required|email' ]); $field = ($validator->fails()) ? 'username' : 'email'; request()->merge([$field => request()->email]); return $field; } /** * Show the application's login form. * * @return \Illuminate\View\View */ public function showLoginForm() { return view('platform.auth::login'); } /** * Log the user out of the application. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse */ public function logout(Request $request) { $this->guard()->logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); if ($response = $this->loggedOut($request)) { return $response; } return $request->wantsJson() ? new JsonResponse([], 204) : redirect(lurl("/")); } /** * Send the response after the user was authenticated. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse */ protected function sendLoginResponse(Request $request) { $request->session()->regenerate(); $this->clearLoginAttempts($request); if ($response = $this->authenticated($request, $this->guard()->user())) { return $response; } return $request->wantsJson() ? new JsonResponse([], 204) : redirect()->intended(lurl($this->redirectPath())); } }