middleware("guest")->except("logout"); } public function username() { return "email"; } // public function login(Request $req) // { // $this->validateLogin($req); // 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) { // $this->incrementLoginAttempts($req); // throw ValidationException::withMessages([ // $this->username() => __("Your account not active, please contact admin."), // ]); // } // if ($this->attemptLogin($req)) { // return $this->sendLoginResponse($req); // } // } // $this->incrementLoginAttempts($req); // return $this->sendFailedLoginResponse($req); // } public function login(Request $req) { $this->validateLogin($req); if (method_exists($this, "hasTooManyLoginAttempts") && $this->hasTooManyLoginAttempts($req)) { $this->fireLockoutEvent($req); return $this->sendLockoutResponse($req); } // Cari user yang belum dihapus (dlt == null) $user = Users::where("email", $req->email) ->whereNull("dlt") ->first(); if (!$user || !\Hash::check($req->password, $user->password)) { $this->incrementLoginAttempts($req); return $this->sendFailedLoginResponse($req); } if ($user->status != Users::STATUS_ACTIVE) { $this->incrementLoginAttempts($req); throw ValidationException::withMessages([ $this->username() => __("Your account not active, please contact admin."), ]); } // Login manual $this->guard()->login($user); return $this->sendLoginResponse($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')); $log = [ "module" => "Auth", "action" => "Login", "desc" => "User login", ]; UserLogs::insert(Auth::user()->id, $log); 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(); $log = [ "module" => "Auth", "action" => "Logout", "desc" => "User logout", ]; UserLogs::insert(Auth::user()->id, $log); 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")); } } }