- 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>
31 lines
732 B
PHP
31 lines
732 B
PHP
<?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();
|
|
}
|
|
}
|