From becbf8aee2ba1adcc03f867a35b6c6d6c6fdbdc4 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Sun, 22 Jun 2025 10:59:30 +0700 Subject: [PATCH] feat(usermanagement): tambahkan helper untuk cek role and permission - Perbarui file `module.json`: - Menambahkan path baru pada array `files` untuk memuat helper: `app/Helpers/RolePermission.php`. - Tambahkan helper baru `RolePermission.php`: - Fungsi `check_permission`: - Mengecek apakah pengguna yang terautentikasi memiliki permission tertentu. - Mendukung opsi untuk mengembalikan respons `abort(403)` jika permission tidak valid. - Fungsi `user_has_role`: - Mengecek apakah pengguna yang terautentikasi memiliki salah satu role dari daftar yang diberikan. - Membandingkan nama role pengguna dengan array input menggunakan mekanisme intersect. Signed-off-by: Daeng Deni Mardaeni --- app/Helpers/RolePermission.php | 30 ++++++++++++++++++++++++++++++ module.json | 4 +++- 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 app/Helpers/RolePermission.php diff --git a/app/Helpers/RolePermission.php b/app/Helpers/RolePermission.php new file mode 100644 index 0000000..26031fe --- /dev/null +++ b/app/Helpers/RolePermission.php @@ -0,0 +1,30 @@ +can($permission)) { + if ($abort) { + abort(403, 'Unauthorized'); + } + return false; + } + + return true; + } + } + + if (!function_exists('user_has_role')) { + function user_has_role(array $roles): bool + { + $user = Auth::user(); + + if (!$user) return false; + + return $user->roles->pluck('name')->intersect($roles)->isNotEmpty(); + } + } diff --git a/module.json b/module.json index 6a3a6d7..71a3d32 100644 --- a/module.json +++ b/module.json @@ -8,7 +8,9 @@ "providers": [ "Modules\\Usermanagement\\Providers\\UsermanagementServiceProvider" ], - "files": [], + "files": [ + "app/Helpers/RolePermission.php" + ], "menu": { "main": [], "master": [],