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 <ddeni05@gmail.com>
This commit is contained in:
30
app/Helpers/RolePermission.php
Normal file
30
app/Helpers/RolePermission.php
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
|
||||||
|
if (!function_exists('check_permission')) {
|
||||||
|
function check_permission(string $permission, bool $abort = true): bool
|
||||||
|
{
|
||||||
|
$user = Auth::user();
|
||||||
|
|
||||||
|
if (!$user || !$user->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();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -8,7 +8,9 @@
|
|||||||
"providers": [
|
"providers": [
|
||||||
"Modules\\Usermanagement\\Providers\\UsermanagementServiceProvider"
|
"Modules\\Usermanagement\\Providers\\UsermanagementServiceProvider"
|
||||||
],
|
],
|
||||||
"files": [],
|
"files": [
|
||||||
|
"app/Helpers/RolePermission.php"
|
||||||
|
],
|
||||||
"menu": {
|
"menu": {
|
||||||
"main": [],
|
"main": [],
|
||||||
"master": [],
|
"master": [],
|
||||||
|
|||||||
Reference in New Issue
Block a user