feat(authentication): perbaikan proses login dan penyesuaian role pengguna
- Memperbaiki proses login dengan menggunakan filter untuk email atau NIK sebagai parameter login. - Menggunakan `updateOrCreate` untuk membuat atau memperbarui data user berdasarkan parameter login. - Menambahkan logika untuk mendapatkan cabang berdasarkan 4 digit terakhir kode cabang (`KD_CABANG`) dan mengaitkannya dalam sesi serta data pengguna. - Menerapkan penyesuaian role pengguna menggunakan kode grup pengguna (`KD_GROUP`) dengan logika `match`. - Mengubah logika role menjadi lebih dinamis, memastikan pengguna mendapatkan role yang sesuai atau role default (`user`). - Memastikan proses `session regenerate` terjadi setelah login. Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
This commit is contained in:
@@ -84,39 +84,35 @@
|
||||
[$key, $val] = explode('=', $rval);
|
||||
$userArray[0][$key] = $val;
|
||||
}
|
||||
|
||||
session()->put($userArray[0]);
|
||||
|
||||
// Use the login value to find the user
|
||||
$loginField = filter_var($credentials['login'], FILTER_VALIDATE_EMAIL) ? 'email' : 'nik';
|
||||
$user = User::where($loginField, $credentials['login'])->first();
|
||||
|
||||
$someValue = $userArray[0]['KD_CABANG']; // Example value containing the code
|
||||
$lastFourDigits = substr($someValue, -4); // Gets the last 4 characters
|
||||
$kodeCabang = $userArray[0]['KD_CABANG']; // Example value containing the code
|
||||
$lastFourDigits = substr($kodeCabang, -4); // Gets the last 4 characters
|
||||
$branch = Branch::where('code', 'LIKE', '%' . $lastFourDigits)->first();
|
||||
|
||||
session()->put($userArray[0]);
|
||||
session()->put('branch_id',$branch->id);
|
||||
|
||||
if (!$user) {
|
||||
//get branch id by 4 digit terakhir 0029
|
||||
|
||||
$user = User::create([
|
||||
$user = User::updateOrCreate(
|
||||
[$loginField => $credentials['login']],
|
||||
[
|
||||
'name' => $userArray[0]['NAMA_USER'],
|
||||
'email' => $loginField === 'email' ? $credentials['login'] : null,
|
||||
'nik' => $loginField === 'nik' ? $credentials['login'] : null,
|
||||
'password' => bcrypt($credentials['password']),
|
||||
'branch_id' => $branch ? $branch->id : null,
|
||||
]);
|
||||
]
|
||||
);
|
||||
|
||||
switch ($userArray[0]['KD_GROUP']) {
|
||||
case '001':
|
||||
$user->assignRole('administrator');
|
||||
break;
|
||||
case '025':
|
||||
$user->assignRole('customer_service');
|
||||
break;
|
||||
}
|
||||
}
|
||||
// Assign role based on user group code
|
||||
$role = match($userArray[0]['KD_GROUP']) {
|
||||
'001' => 'administrator',
|
||||
'025' => 'customer_service',
|
||||
default => 'user'
|
||||
};
|
||||
|
||||
$user->syncRoles($role);
|
||||
|
||||
Auth::loginUsingId($user->id, true);
|
||||
$this->session()->regenerate();
|
||||
|
||||
Reference in New Issue
Block a user