🚨 fix(auth): Tingkatkan pesan error pada proses login

Meningkatkan user experience dengan memberikan pesan error yang lebih spesifik pada proses login:

- Menambahkan logika untuk membedakan error "password salah" dan "user tidak ditemukan"
- Menggunakan FILTER_VALIDATE_EMAIL untuk mendeteksi apakah input adalah email atau NIK
- Mengganti pesan error generik "Email/NIK atau password tidak sesuai" menjadi pesan yang lebih spesifik
- Menambahkan validasi untuk mengecek keberadaan user sebelum memberikan pesan error
- Memperbaiki struktur pesan error untuk menampilkan error pada field yang tepat (login atau password)
- Meningkatkan keamanan dengan tetap mempertahankan rate limiting pada percobaan login yang gagal
- Memastikan backward compatibility dengan sistem error handling yang sudah ada
This commit is contained in:
Daeng Deni Mardaeni
2025-09-10 10:56:30 +07:00
parent 228a4f8dc7
commit 70953ea150

View File

@@ -57,9 +57,17 @@
} else {
if (!Auth::attempt($authData, $this->boolean('remember'))) {
RateLimiter::hit($this->throttleKey());
throw ValidationException::withMessages([
'login' => 'Email/NIK atau password tidak sesuai.'
]);
$loginField = filter_var($credentials['login'], FILTER_VALIDATE_EMAIL) ? 'email' : 'nik';
$user = User::where($loginField, $credentials['login'])->first();
$messages = [];
if ($user) {
$messages['password'] = 'Password tidak sesuai';
} else {
$messages['login'] = 'Email/NIK tidak ditemukan';
}
throw ValidationException::withMessages($messages);
}
RateLimiter::clear($this->throttleKey());
@@ -130,9 +138,17 @@
// Authentication failed
RateLimiter::hit($this->throttleKey());
throw ValidationException::withMessages([
'login' => 'Email/NIK atau password tidak sesuai.',
]);
$loginField = filter_var($credentials['login'], FILTER_VALIDATE_EMAIL) ? 'email' : 'nik';
$user = User::where($loginField, $credentials['login'])->first();
$messages = [];
if ($user) {
$messages['password'] = 'Password tidak sesuai';
} else {
$messages['login'] = 'Email/NIK tidak ditemukan';
}
throw ValidationException::withMessages($messages);
}
/**