redirectBasedOnRole(Auth::user()); } return view('login'); } public function login(Request $request) { $credentials = $request->validate([ 'mail' => 'required|email', 'password' => 'required' ]); if (Auth::attempt(['mail' => $credentials['mail'], 'password' => $credentials['password']])) { $request->session()->regenerate(); $user = Auth::user(); if ($user->status != User::STATUS_ACTIVE) { Auth::logout(); return back()->withErrors([ 'mail' => 'Tài khoản của bạn đã bị khóa hoặc bạn đã nghỉ việc.', ]); } return $this->redirectBasedOnRole($user); } return back()->withErrors([ 'mail' => 'Email hoặc mật khẩu không chính xác.', ]); } public function logout(Request $request) { Auth::logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); return redirect('/login'); } private function redirectBasedOnRole($user) { if ($user->first_login == User::FIRST_LOGIN_TRUE) { return redirect()->route('user.change_password'); } if ($user->role == User::ROLE_ADMIN) { return redirect()->route('admin.dashboard'); } return redirect()->route('user.dashboard'); } }