I hasPermissions

This commit is contained in:
a6a2f5842 2025-06-19 15:08:49 +02:00
parent 7e522f222a
commit 87d2429630
2 changed files with 11 additions and 11 deletions

View File

@ -13,7 +13,7 @@ return [
'table_names' => [ 'table_names' => [
'permissions' => 'permissions', 'permissions' => 'permissions',
'permission_usage' => 'permission_usages', 'permission_usage' => 'permission_usages',
'permission_member' => 'permission_member', 'permission_member' => 'permission_members',
'roles' => 'roles', 'roles' => 'roles',
'role_member' => 'role_members', 'role_member' => 'role_members',
'role_permission' => 'role_permissions', 'role_permission' => 'role_permissions',

View File

@ -47,7 +47,9 @@ trait HasPermissions
if (is_numeric($permission)) { if (is_numeric($permission)) {
$permission = $permission_class::find($permission); $permission = $permission_class::find($permission);
} elseif (is_string($permission)) { } elseif (is_string($permission)) {
$permission = $permission_class::where('slug', $permission)->firstOrCreate(); $permission = $permission_class::firstOrCreate([
'slug' => $permission
]);
} }
if ($permission instanceof $permission_class) { if ($permission instanceof $permission_class) {
@ -57,7 +59,9 @@ trait HasPermissions
} }
if ($permission) { if ($permission) {
return $this->permissions()->syncWithoutDetaching($permission); $this->permissions()->syncWithoutDetaching($permission);
return true;
} }
return false; return false;
@ -73,17 +77,13 @@ trait HasPermissions
$permission = $permission_class::where('slug', $permission)->first(); $permission = $permission_class::where('slug', $permission)->first();
} }
if ($permission instanceof $permission_class) {
// Already a Permission instance
} else {
throw new \InvalidArgumentException('Permission must be a string, numeric ID, or an instance of Permission.');
}
if ($permission) { if ($permission) {
return $this->permissions()->detach($permission); $this->permissions()->detach($permission);
return true;
} }
return false; return true;
} }
/** /**