middleware('guest')->except('logout'); $this->middleware('auth')->only('logout'); } /** * Handle a login request to the application. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\Response|\Illuminate\Http\JsonResponse * * @throws \Illuminate\Validation\ValidationException */ public function login(Request $request) { $this->validateLogin($request); // 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($request)) { $this->fireLockoutEvent($request); return $this->sendLockoutResponse($request); } if ($this->attemptLogin($request)) { return $this->sendLoginResponse($request); } // 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($request); return $this->sendFailedLoginResponse($request); } /** * Get the failed login response instance. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\RedirectResponse */ protected function sendFailedLoginResponse(Request $request) { // Cek apakah email ada di database tapi belum diverifikasi $user = \App\Models\User::where('email', $request->email)->first(); if ($user && !$user->hasVerifiedEmail()) { return redirect()->route('home') ->with('login_error', 'Email belum diverifikasi. Silakan periksa email Anda untuk link verifikasi.') ->withInput($request->only('email')); } return redirect()->route('home') ->with('login_error', 'Email atau password yang anda masukkan salah.') ->withInput($request->only('email')); } /** * The user has been authenticated. * * @param \Illuminate\Http\Request $request * @param mixed $user * @return mixed */ protected function authenticated(Request $request, $user) { // Cek jika email belum terverifikasi if (!$user->hasVerifiedEmail()) { Auth::logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); return redirect()->route('home') ->with('login_error', 'Akun Anda belum diverifikasi. Silakan periksa email Anda untuk link verifikasi.') ->withInput($request->only('email')); } session()->flash('success', 'Login berhasil!'); if ($user->role === 'superadmin') { return redirect('/superadmin'); } elseif ($user->role === 'admin') { return redirect('/admin'); } return redirect()->intended($this->redirectTo); } /** * Log the user out of the application. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\RedirectResponse */ public function logout(Request $request) { Auth::logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); session()->flash('error', 'Berhasil logout!'); return redirect('/'); } }