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);
|
[$key, $val] = explode('=', $rval);
|
||||||
$userArray[0][$key] = $val;
|
$userArray[0][$key] = $val;
|
||||||
}
|
}
|
||||||
|
|
||||||
session()->put($userArray[0]);
|
|
||||||
|
|
||||||
// Use the login value to find the user
|
// Use the login value to find the user
|
||||||
$loginField = filter_var($credentials['login'], FILTER_VALIDATE_EMAIL) ? 'email' : 'nik';
|
$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
|
$kodeCabang = $userArray[0]['KD_CABANG']; // Example value containing the code
|
||||||
$lastFourDigits = substr($someValue, -4); // Gets the last 4 characters
|
$lastFourDigits = substr($kodeCabang, -4); // Gets the last 4 characters
|
||||||
$branch = Branch::where('code', 'LIKE', '%' . $lastFourDigits)->first();
|
$branch = Branch::where('code', 'LIKE', '%' . $lastFourDigits)->first();
|
||||||
|
|
||||||
|
session()->put($userArray[0]);
|
||||||
session()->put('branch_id',$branch->id);
|
session()->put('branch_id',$branch->id);
|
||||||
|
|
||||||
if (!$user) {
|
$user = User::updateOrCreate(
|
||||||
//get branch id by 4 digit terakhir 0029
|
[$loginField => $credentials['login']],
|
||||||
|
[
|
||||||
$user = User::create([
|
|
||||||
'name' => $userArray[0]['NAMA_USER'],
|
'name' => $userArray[0]['NAMA_USER'],
|
||||||
'email' => $loginField === 'email' ? $credentials['login'] : null,
|
'email' => $loginField === 'email' ? $credentials['login'] : null,
|
||||||
'nik' => $loginField === 'nik' ? $credentials['login'] : null,
|
'nik' => $loginField === 'nik' ? $credentials['login'] : null,
|
||||||
'password' => bcrypt($credentials['password']),
|
'password' => bcrypt($credentials['password']),
|
||||||
'branch_id' => $branch ? $branch->id : null,
|
'branch_id' => $branch ? $branch->id : null,
|
||||||
]);
|
]
|
||||||
|
);
|
||||||
|
|
||||||
switch ($userArray[0]['KD_GROUP']) {
|
// Assign role based on user group code
|
||||||
case '001':
|
$role = match($userArray[0]['KD_GROUP']) {
|
||||||
$user->assignRole('administrator');
|
'001' => 'administrator',
|
||||||
break;
|
'025' => 'customer_service',
|
||||||
case '025':
|
default => 'user'
|
||||||
$user->assignRole('customer_service');
|
};
|
||||||
break;
|
|
||||||
}
|
$user->syncRoles($role);
|
||||||
}
|
|
||||||
|
|
||||||
Auth::loginUsingId($user->id, true);
|
Auth::loginUsingId($user->id, true);
|
||||||
$this->session()->regenerate();
|
$this->session()->regenerate();
|
||||||
|
|||||||
Reference in New Issue
Block a user