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": [
|
||||
"Modules\\Usermanagement\\Providers\\UsermanagementServiceProvider"
|
||||
],
|
||||
"files": [],
|
||||
"files": [
|
||||
"app/Helpers/RolePermission.php"
|
||||
],
|
||||
"menu": {
|
||||
"main": [],
|
||||
"master": [],
|
||||
|
||||
Reference in New Issue
Block a user