validate([ 'login' => 'required', 'password' => 'required|min:6', ]); // Tentukan apakah input login berupa email atau NIM $loginInput = $request->login; $isEmail = filter_var($loginInput, FILTER_VALIDATE_EMAIL); // Validasi panjang NIM jika bukan email if (!$isEmail && strlen($loginInput) < 4) { return back()->withErrors([ 'login' => 'NIM minimal 4 karakter', ])->withInput(); } Log::info('Login attempt', [ 'login' => $loginInput, 'ip' => $request->ip() ]); $remember = $request->has('remember'); // Cari user berdasarkan email atau nim $user = \App\Models\User::where('email', $loginInput) ->orWhere('nim', $loginInput) ->first(); if ($user && \Hash::check($request->password, $user->password)) { Auth::login($user, $remember); $request->session()->regenerate(); Log::info('User authenticated', [ 'id' => $user->id, 'email' => $user->email, 'nim' => $user->nim ?? null, 'role' => $user->role ]); if ($user->role === 'admin') { return redirect()->route('admin.dashboard'); } elseif ($user->role === 'user') { return redirect()->route('user.dashboard'); } return redirect('/')->with('error', 'Undefined user role'); } return back()->withErrors([ 'login' => 'NIM atau Email atau Password salah' ])->withInput(); } public function logout(Request $request) { Auth::logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); return redirect()->route('/login'); } }