validate([ 'email' => 'required|email', 'password' => 'required' ]); if (Auth::attempt($credentials)) { $request->session()->regenerate(); // Redirect berdasarkan role if (Auth::user()->role === 'admin') { return redirect()->route('admin.dashboard'); } return redirect()->route('menu.index'); } return back()->with('error', 'Email atau password salah!'); } public function register(Request $request) { $request->validate([ 'name' => 'required|string|max:255', 'email' => 'required|string|email|max:255|unique:users', 'password' => 'required|string|min:5|confirmed', ]); $user = User::create([ 'name' => $request->name, 'email' => $request->email, 'password' => Hash::make($request->password), 'role' => 'user' ]); Auth::login($user); // Redirect user baru ke halaman menu return redirect()->route('menu.index')->with('success', 'Registrasi berhasil!'); } public function logout(Request $request) { Auth::logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); return redirect('/'); } public function showForgotPassword() { return view('auth.forgot-password'); } public function sendResetLink(Request $request) { $request->validate([ 'email' => 'required|email|exists:users,email' ]); $status = Password::sendResetLink( $request->only('email') ); return $status === Password::RESET_LINK_SENT ? back()->with('status', __($status)) : back()->withErrors(['email' => __($status)]); } public function showResetPassword(string $token, Request $request) { return view('auth.reset-password', [ 'token' => $token, 'email' => $request->email ]); } public function resetPassword(Request $request) { $request->validate([ 'token' => 'required', 'email' => 'required|email|exists:users,email', 'password' => 'required|min:8|confirmed', ]); $status = Password::reset( $request->only('email', 'password', 'password_confirmation', 'token'), function ($user, $password) { $user->forceFill([ 'password' => Hash::make($password) ])->setRememberToken(Str::random(60)); $user->save(); event(new PasswordReset($user)); } ); return $status === Password::PASSWORD_RESET ? redirect()->route('login')->with('status', __($status)) : back()->withErrors(['email' => [__($status)]]); } }