From ddb76d45707f1a5102008e5757a8eab21cf93bde Mon Sep 17 00:00:00 2001 From: mikael-zakaria Date: Tue, 20 Jan 2026 09:56:16 +0700 Subject: [PATCH] Update Role User (superuser, admin, lab, phlebo, cs) dan pengelompokan controller dan views --- app/Config/Routes.php | 34 ++ app/Controllers/Admin.php | 4 - app/Controllers/Auth.php | 18 +- app/Controllers/Cs.php | 17 + app/Controllers/Phlebotomist.php | 17 + app/Controllers/Superuser.php | 21 ++ app/Filters/GuestFilter.php | 7 +- app/Filters/RoleFilter.php | 6 +- app/Views/admin/main.php | 2 +- app/Views/cs/dialog_sample.php | 88 +++++ app/Views/cs/dialog_unval.php | 10 + app/Views/cs/dialog_val.php | 13 + app/Views/cs/index.php | 413 +++++++++++++++++++++ app/Views/cs/main.php | 62 ++++ app/Views/lab/main.php | 4 +- app/Views/phlebo/dialog_sample.php | 88 +++++ app/Views/phlebo/dialog_unval.php | 10 + app/Views/phlebo/dialog_val.php | 13 + app/Views/phlebo/index.php | 413 +++++++++++++++++++++ app/Views/phlebo/main.php | 62 ++++ app/Views/superuser/dialog_preview.php | 45 +++ app/Views/superuser/dialog_sample.php | 99 +++++ app/Views/superuser/dialog_setPassword.php | 28 ++ app/Views/superuser/dialog_unval.php | 20 + app/Views/superuser/index.php | 401 ++++++++++++++++++++ app/Views/superuser/main.php | 62 ++++ app/Views/superuser/users.php | 269 ++++++++++++++ 27 files changed, 2205 insertions(+), 21 deletions(-) create mode 100644 app/Controllers/Cs.php create mode 100644 app/Controllers/Phlebotomist.php create mode 100644 app/Controllers/Superuser.php create mode 100644 app/Views/cs/dialog_sample.php create mode 100644 app/Views/cs/dialog_unval.php create mode 100644 app/Views/cs/dialog_val.php create mode 100644 app/Views/cs/index.php create mode 100644 app/Views/cs/main.php create mode 100644 app/Views/phlebo/dialog_sample.php create mode 100644 app/Views/phlebo/dialog_unval.php create mode 100644 app/Views/phlebo/dialog_val.php create mode 100644 app/Views/phlebo/index.php create mode 100644 app/Views/phlebo/main.php create mode 100644 app/Views/superuser/dialog_preview.php create mode 100644 app/Views/superuser/dialog_sample.php create mode 100644 app/Views/superuser/dialog_setPassword.php create mode 100644 app/Views/superuser/dialog_unval.php create mode 100644 app/Views/superuser/index.php create mode 100644 app/Views/superuser/main.php create mode 100644 app/Views/superuser/users.php diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 68626c7..c9ef2c6 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -20,6 +20,22 @@ $routes->get('label/coll/(:any)', 'Label::coll/$1'); $routes->get('label/dispatch/(:any)/(:any)', 'Label::dispatch/$1/$2'); $routes->get('label/all/(:any)', 'Label::print_all/$1'); +$routes->group('superuser', ['filter' => 'role:0'], function($routes) { + $routes->get('', 'Superuser::index'); + $routes->get('users', 'Superuser::users'); + $routes->get('api/users', 'Users::index'); + $routes->post('api/users', 'Users::create'); + $routes->patch('api/users/(:any)', 'Users::update/$1'); + $routes->delete('api/users/(:any)', 'Users::delete/$1'); + $routes->get('api/requests', 'Requests::index'); + $routes->post('api/requests/validate/(:any)', 'Requests::val/$1'); + $routes->delete('api/requests/validate/(:any)', 'Requests::unval/$1'); + $routes->post('api/samples/collect/(:any)', 'Samples::collect/$1'); + $routes->delete('api/samples/collect/(:any)', 'Samples::uncollect/$1'); + $routes->delete('api/samples/receive/(:any)', 'Samples::unreceive/$1'); + $routes->get('api/samples/(:any)', 'Samples::show/$1'); +}); + $routes->group('admin', ['filter' => 'role:1'], function($routes) { $routes->get('', 'Admin::index'); $routes->get('users', 'Admin::users'); @@ -45,4 +61,22 @@ $routes->group('lab', ['filter' => 'role:2'], function($routes) { $routes->get('api/samples/(:any)', 'Samples::show/$1'); }); +$routes->group('phlebo', ['filter' => 'role:3'], function($routes) { + $routes->get('', 'Phlebotomist::index'); + $routes->get('api/requests', 'Requests::index'); + $routes->post('api/requests/validate/(:any)', 'Requests::val/$1'); + $routes->delete('api/requests/validate/(:any)', 'Requests::unval/$1'); + $routes->post('api/samples/collect/(:any)', 'Samples::collect/$1'); + $routes->get('api/samples/(:any)', 'Samples::show/$1'); +}); + +$routes->group('cs', ['filter' => 'role:4'], function($routes) { + $routes->get('', 'Cs::index'); + $routes->get('api/requests', 'Requests::index'); + $routes->post('api/requests/validate/(:any)', 'Requests::val/$1'); + $routes->delete('api/requests/validate/(:any)', 'Requests::unval/$1'); + $routes->post('api/samples/collect/(:any)', 'Samples::collect/$1'); + $routes->get('api/samples/(:any)', 'Samples::show/$1'); +}); + $routes->get('/dummypage', 'Home::dummyPage'); diff --git a/app/Controllers/Admin.php b/app/Controllers/Admin.php index 55ea447..1a92b7d 100644 --- a/app/Controllers/Admin.php +++ b/app/Controllers/Admin.php @@ -14,8 +14,4 @@ class Admin extends BaseController { return view('admin/index'); } - public function users() { - return view('admin/users'); - } - } diff --git a/app/Controllers/Auth.php b/app/Controllers/Auth.php index f239070..6503a9f 100644 --- a/app/Controllers/Auth.php +++ b/app/Controllers/Auth.php @@ -25,19 +25,19 @@ class Auth extends BaseController { switch ((int)$user['USERROLEID']) { case 0: - $role = 'admin'; + $role = 'Superuser'; break; case 1: - $role = 'analyst'; + $role = 'Admin'; break; case 2: - $role = 'phlebotomist'; + $role = 'Lab Analyst'; break; case 3: - $role = 'cs'; + $role = 'Phlebotomist'; break; case 4: - $role = 'cs'; + $role = 'Customer Service'; break; default: $role = ''; @@ -47,17 +47,19 @@ class Auth extends BaseController { $session->set([ 'isLoggedIn' => true, 'userid' => (string) $user['USERID'], - 'userlevel' => (int) $user['USERLEVEL'], + 'userroleid' => (int) $user['USERROLEID'], 'userrole' => (string) $role, ]); - switch ((int)$user['USERLEVEL']) { + switch ((int)$user['USERROLEID']) { + case 0: + return redirect()->to('superuser'); case 1: return redirect()->to('admin'); case 2: return redirect()->to('lab'); case 3: - return redirect()->to('analyst'); + return redirect()->to('phlebo'); case 4: return redirect()->to('cs'); default: diff --git a/app/Controllers/Cs.php b/app/Controllers/Cs.php new file mode 100644 index 0000000..933a5db --- /dev/null +++ b/app/Controllers/Cs.php @@ -0,0 +1,17 @@ +get('isLoggedIn')) { - switch ($session->get('userlevel')) { + switch ($session->get('userroleid')) { + case 0: return redirect()->to('/superuser'); case 1: return redirect()->to('/admin'); - case 2: return redirect()->to('/doctor'); - case 3: return redirect()->to('/analyst'); + case 2: return redirect()->to('/lab'); + case 3: return redirect()->to('/phlebo'); case 4: return redirect()->to('/cs'); default: return redirect()->to('/login'); } diff --git a/app/Filters/RoleFilter.php b/app/Filters/RoleFilter.php index 7bda784..575b6a7 100644 --- a/app/Filters/RoleFilter.php +++ b/app/Filters/RoleFilter.php @@ -20,11 +20,11 @@ class RoleFilter implements FilterInterface // Kalau filter menerima argumen dari routes misal (role:1,2,3), lalu periksa denagn userlevel if ($arguments) { - $allowedLevels = array_map('intval', $arguments); // ubah arguments dalam bentuk array string ke array integer - $userLevel = (int) $session->get('userlevel'); + $allowedRoles = array_map('intval', $arguments); // ubah arguments dalam bentuk array string ke array integer + $userRoleId = (int) $session->get('userroleid'); // Bandingkan dengan userlevel - if (! in_array($userLevel, $allowedLevels)) { + if (! in_array($userRoleId, $allowedRoles)) { return redirect()->to('/unauthorized'); // misalnya ke halaman error } } diff --git a/app/Views/admin/main.php b/app/Views/admin/main.php index e3605f0..5e241ee 100644 --- a/app/Views/admin/main.php +++ b/app/Views/admin/main.php @@ -34,7 +34,7 @@