middleware("guest")->except("logout"); } public function username() { return "email"; } public function login(Request $req) { $this->validateLogin($req); // If the class is using the ThrottlesLogins trait, we can automatically throttle // the login attempts for this application. We'll key this by the username and // the IP address of the client making these requests into this application. if ( method_exists($this, "hasTooManyLoginAttempts") && $this->hasTooManyLoginAttempts($req) ) { $this->fireLockoutEvent($req); return $this->sendLockoutResponse($req); } if ($this->guard()->validate($this->credentials($req))) { $user = $this->guard()->getLastAttempted(); if ($user->dlt != null) { $this->incrementLoginAttempts($req); throw ValidationException::withMessages([ $this->username() => [trans("auth.failed")], ]); } if ($user->status != Users::STATUS_ACTIVE) { // Increment the failed login attempts and redirect back to the // login form with an error message. $this->incrementLoginAttempts($req); // return redirect() // ->back() // ->withInput($req->only($this->username(), 'remember')) // ->withErrors(['active' => 'You must be active to login.']); throw ValidationException::withMessages([ $this->username() => __( "Your account not active, please contact admin." ), ]); } if ($this->attemptLogin($req)) { return $this->sendLoginResponse($req); } } // If the login attempt was unsuccessful we will increment the number of attempts // to login and redirect the user back to the login form. Of course, when this // user surpasses their maximum number of attempts they will get locked out. $this->incrementLoginAttempts($req); return $this->sendFailedLoginResponse($req); } protected function validateLogin(Request $req) { $this->validate($req, [ $this->username() => "required|string|email", "password" => "required|string", ]); } protected function sendLoginResponse(Request $req) { $req->session()->regenerate(); $this->clearLoginAttempts($req); if ($response = $this->authenticated($req, $this->guard()->user())) { return $response; } // return $req->wantsJson() // ? new JsonResponse([], 204) // : redirect()->intended($this->redirectPath()); // return $req->wantsJson() // ? new JsonResponse([], 204) // : redirect(route('view_dashboard')); if ($req->wantsJson()) { return new JsonResponse([], 204); } else { $user = Auth::user(); if ($user->role == Users::ROLE_ADMIN) { return redirect(route("view_dashboard")); } elseif ($user->role == Users::ROLE_VENDOR) { return redirect(route("view_dashboard")); } elseif ($user->role == Users::ROLE_CHECKER) { return redirect(route("view_user_checker")); } elseif ($user->role == Users::ROLE_CLIENT_ADMIN) { return redirect( route("view_user_client_transaction_add") . "?rdl=1" ); } elseif ($user->role == Users::ROLE_SPECIAL_TRACKING) { return redirect(route("view_dashboard")); } elseif ($user->role == Users::ROLE_FINANCE) { return redirect(route("view_keuangan_payment")); } else { $this->guard()->logout(); $req->session()->invalidate(); $req->session()->regenerateToken(); // return redirect(route('login')); return redirect(route("login")); } } } public function logout(Request $req) { $user = Auth::user(); if ($user->role == Users::ROLE_ADMIN) { $this->guard()->logout(); $req->session()->invalidate(); $req->session()->regenerateToken(); if ($response = $this->loggedOut($req)) { return $response; } return $req->wantsJson() ? new JsonResponse([], 204) : redirect(route("login_admin")); } elseif ($user->role == Users::ROLE_FINANCE) { $this->guard()->logout(); $req->session()->invalidate(); $req->session()->regenerateToken(); if ($response = $this->loggedOut($req)) { return $response; } return $req->wantsJson() ? new JsonResponse([], 204) : redirect(route("login_admin")); } elseif ($user->role == Users::ROLE_VENDOR) { $this->guard()->logout(); $req->session()->invalidate(); $req->session()->regenerateToken(); if ($response = $this->loggedOut($req)) { return $response; } return $req->wantsJson() ? new JsonResponse([], 204) : redirect(route("login_vendor")); } elseif ($user->role == Users::ROLE_CHECKER) { $this->guard()->logout(); $req->session()->invalidate(); $req->session()->regenerateToken(); if ($response = $this->loggedOut($req)) { return $response; } return $req->wantsJson() ? new JsonResponse([], 204) : redirect(route("login_checker")); } elseif ($user->role == Users::ROLE_CLIENT_ADMIN) { $this->guard()->logout(); $req->session()->invalidate(); $req->session()->regenerateToken(); if ($response = $this->loggedOut($req)) { return $response; } return $req->wantsJson() ? new JsonResponse([], 204) : redirect(route("login_client")); } elseif ($user->role == Users::ROLE_SPECIAL_TRACKING) { $this->guard()->logout(); $req->session()->invalidate(); $req->session()->regenerateToken(); if ($response = $this->loggedOut($req)) { return $response; } return $req->wantsJson() ? new JsonResponse([], 204) : redirect(route("login_admin")); } } }