validate([ 'username' => ['required', 'string'], 'password' => ['required', 'string'], ], [ 'username.required' => 'Username harus diisi.', 'password.required' => 'Password harus diisi.', ]); if (Auth::attempt($credentials, $request->has('remember'))) { $request->session()->regenerate(); return redirect()->intended('/admin/home'); } throw ValidationException::withMessages([ 'username' => 'Kredensial tidak berhasil digunakan untuk login', ]); } public function logout(Request $request): RedirectResponse { Auth::logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); return redirect()->route('admin.home'); } public function show(): View { $user = User::findOrFail(Auth::id()); return view('admin.auth.profile', compact('user')); } public function update(Request $request): RedirectResponse { $user = User::findOrFail(Auth::id()); $validated = $request->validate([ 'name' => ['required', 'string', 'max:255'], 'username' => ['required', 'string', 'max:255', 'unique:users,username,' . $user->id], ], [ 'name.required' => 'Nama harus diisi.', 'username.required' => 'Username harus diisi.', 'username.unique' => 'Username sudah digunakan.', ]); $user->update($request->all()); return redirect()->route('admin.auth.profile.show')->with('success', 'Profil berhasil diperbarui.'); } public function changePassword(Request $request): RedirectResponse { $user = User::findOrFail(Auth::id()); $validated = $request->validate([ 'current_password' => ['required', 'string', 'current_password'], 'password' => ['required', 'string', 'min:8', 'confirmed'], ], [ 'current_password.required' => 'Password lama harus diisi.', 'current_password.current_password' => 'Password lama tidak cocok.', 'password.required' => 'Password harus diisi.', 'password.min' => 'Password minimal 8 karakter.', 'password.confirmed' => 'Password tidak cocok.', ]); $user->update([ 'password' => Hash::make($validated['password']), ]); return redirect()->route('admin.auth.profile.show')->with('success', 'Password berhasil diperbarui.'); } }