Files
mtdb_movie/common/Auth/Permissions/Traits/HasPermissionsRelation.php
maher 703f50a09d
Some checks failed
Build / run (push) Has been cancelled
first commit
2025-10-29 11:42:25 +01:00

51 lines
1.3 KiB
PHP
Executable File

<?php
namespace Common\Auth\Permissions\Traits;
use Common\Auth\Permissions\Permission;
use Illuminate\Database\Eloquent\Relations\MorphToMany;
trait HasPermissionsRelation
{
public function permissions(): MorphToMany
{
return $this->morphToMany(Permission::class, 'permissionable')
->withPivot('restrictions')
->select('name', 'permissions.id', 'permissions.restrictions');
}
public function hasPermission(string $name): bool
{
return !is_null($this->getPermission($name)) ||
!is_null($this->getPermission('admin'));
}
public function hasExactPermission(string $name): bool
{
return !is_null($this->getPermission($name));
}
public function getPermission(string $name): Permission|null
{
if (method_exists($this, 'loadPermissions')) {
$this->loadPermissions();
}
foreach ($this->permissions as $permission) {
if ($permission->name === $name) {
return $permission;
}
}
return null;
}
public function getRestrictionValue(
string $permissionName,
string $restriction,
): int|bool|null {
$permission = $this->getPermission($permissionName);
return $permission?->getRestrictionValue($restriction);
}
}