🚨 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:
@@ -57,9 +57,17 @@
|
|||||||
} else {
|
} else {
|
||||||
if (!Auth::attempt($authData, $this->boolean('remember'))) {
|
if (!Auth::attempt($authData, $this->boolean('remember'))) {
|
||||||
RateLimiter::hit($this->throttleKey());
|
RateLimiter::hit($this->throttleKey());
|
||||||
throw ValidationException::withMessages([
|
$loginField = filter_var($credentials['login'], FILTER_VALIDATE_EMAIL) ? 'email' : 'nik';
|
||||||
'login' => 'Email/NIK atau password tidak sesuai.'
|
$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());
|
RateLimiter::clear($this->throttleKey());
|
||||||
@@ -130,9 +138,17 @@
|
|||||||
|
|
||||||
// Authentication failed
|
// Authentication failed
|
||||||
RateLimiter::hit($this->throttleKey());
|
RateLimiter::hit($this->throttleKey());
|
||||||
throw ValidationException::withMessages([
|
$loginField = filter_var($credentials['login'], FILTER_VALIDATE_EMAIL) ? 'email' : 'nik';
|
||||||
'login' => 'Email/NIK atau password tidak sesuai.',
|
$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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user