2 Commits

Author SHA1 Message Date
Daeng Deni Mardaeni
70953ea150 🚨 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
2025-09-10 10:56:30 +07:00
Daeng Deni Mardaeni
228a4f8dc7 🐛 fix(auth): perbaiki penanganan branch null dan tambahkan mapping role baru
Perbaikan Penanganan Branch Null:
- Menambahkan pengecekan kondisional sebelum menyimpan branch_id ke session
- Mencegah error ketika branch tidak ditemukan berdasarkan lastFourDigits
- Implementasi menggunakan if statement untuk memastikan $branch ada sebelum mengakses properti id
2025-09-09 09:52:24 +07:00

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());
@@ -99,7 +107,9 @@
$branch = Branch::where('code', 'LIKE', '%' . $lastFourDigits)->first();
session()->put($userArray[0]);
session()->put('branch_id',$branch->id);
if ($branch) {
session()->put('branch_id', $branch->id);
}
$user = User::updateOrCreate(
[$loginField => $credentials['login']],
@@ -128,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);
}
/**