only(['username', 'password']); // if (Auth::attempt($credentials)) { // $user = Auth::user(); // if ($user->role === 'wakil_kepala') { // return redirect()->intended('/wakil_kepala/dashboard'); // } elseif ($user->role === 'siswa') { // return redirect()->intended('/siswa/dashboard'); // } // } $validator = Validator::make($request->all(), [ 'username' => 'required', 'password' => 'required', ], [ 'required' => ':attribute harus diisi.', ]); $userCount = User::where('username', $request->username)->count(); if ($validator->fails() || $userCount == 0) { // Tambahkan pesan error khusus jika username tidak terdaftar $validator->errors()->add('username', 'Akun tidak terdaftar.'); return redirect('/login') ->withErrors($validator) ->withInput(); } $remember = true; // Sesuaikan dengan kebutuhan Anda if (Auth::attempt(['username' => $request->username, 'password' => $request->password], $remember)) { $user = Auth::user(); $request->session()->put('user_id', $user->id); // Membuat dan menyimpan token "remember me" $token = $user->createToken("auth-token")->plainTextToken; $user->update(['remember_token' => $token]); return redirect('/dashboard')->with('success', 'Login berhasil!'); } else { return redirect('/login') ->withErrors(['username' => 'Username atau password salah.']) ->withInput(); } } public function showRegisterForm() { return view('auth.register'); } public function register(Request $request) { $validator = Validator::make($request->all(), [ 'name' => ['required', 'min:3', 'max:225'], 'username' => ['required', 'min:3', 'max:10'], 'email' => 'required|email', 'password' => 'required|min:5|max:255', ], [ 'required' => ':attribute harus diisi.', 'email' => ':attribute harus berupa email yang valid.', 'min' => 'panjang :attribute minimal :min karakter.', ]); if ($validator->fails()) { return redirect('/register') ->withErrors($validator) ->withInput(); } if (User::where('username', $request->username)->exists() || User::where('email', $request->email)->exists()) { return redirect('/register') ->withErrors(['username' => 'Username atau email sudah digunakan.']) ->withInput(); } $user = User::create([ 'name' => $request->name, 'username' => $request->username, 'email' => $request->email, 'password' => bcrypt($request->password), 'role' => 'siswa', ]); return redirect('/login')->with('success', 'Registrasi berhasil! Silakan login.'); } public function showResetForm(Request $request, $token = null) { return view('auth.reset-password')->with( ['email' => $request->email, 'token' => $token] ); } public function showLinkRequestForm(Request $request) { return view('auth.forgot-password'); } // Mengirim email tautan reset password public function sendResetLinkEmail(Request $request) { $request->validate(['email' => 'required|email']); $status = Password::sendResetLink( $request->only('email') ); return $status === Password::RESET_LINK_SENT ? back()->with(['status' => __($status)]) : back()->withErrors(['email' => __($status)]); } // Menangani proses reset password public function resetPassword(Request $request) { $request->validate([ 'token' => 'required', 'email' => 'required|email', 'password' => 'required|confirmed|min:6', ]); $status = Password::reset( $request->only('email', 'password', 'password_confirmation', 'token'), function ($user, $password) { $user->forceFill([ 'password' => bcrypt($password), 'remember_token' => Str::random(60), ])->save(); // Hapus token "remember me" setelah reset password $user->tokens()->delete(); } ); return $status == Password::PASSWORD_RESET ? redirect('/login')->with(['status' => __($status)]) : back()->withErrors(['email' => [__($status)]]); } public function logout(Request $request) { $guard = 'web'; // Sesuaikan dengan guard yang digunakan // Hapus seluruh cookie sesi Session::flush(); // Logout pengguna Auth::guard($guard)->logout(); return redirect('/home')->with('success', 'Terimakasih sudah logout! Silakan login kembali.'); } }