diff --git a/src/Linna/Authorization/PermissionTrait.php b/src/Linna/Authorization/PermissionTrait.php index 7fca0bd..954d532 100644 --- a/src/Linna/Authorization/PermissionTrait.php +++ b/src/Linna/Authorization/PermissionTrait.php @@ -49,6 +49,10 @@ public function canById(null|int|string $permissionId): bool return true; } + if (\in_array($permissionId, \array_column($this->permission, 'id'), true)) { + return true; + } + return false; } @@ -62,6 +66,10 @@ public function canById(null|int|string $permissionId): bool */ public function canByName(string $permissionName): bool { + if (isset($this->permission[$permissionName])) { + return true; + } + if (\in_array($permissionName, \array_column($this->permission, 'name'), true)) { return true; } diff --git a/src/Linna/Authorization/RoleTrait.php b/src/Linna/Authorization/RoleTrait.php index ef49f49..072fb01 100644 --- a/src/Linna/Authorization/RoleTrait.php +++ b/src/Linna/Authorization/RoleTrait.php @@ -47,6 +47,10 @@ public function hasRoleById(null|int|string $roleId): bool return true; } + if (\in_array($roleId, \array_column($this->role, 'id'), true)) { + return true; + } + return false; } @@ -59,6 +63,10 @@ public function hasRoleById(null|int|string $roleId): bool */ public function hasRoleByName(string $roleName): bool { + if (isset($this->role[$roleName])) { + return true; + } + if (\in_array($roleName, \array_column($this->role, 'name'), true)) { return true; } diff --git a/src/Linna/Authorization/UserTrait.php b/src/Linna/Authorization/UserTrait.php index f012133..e60c2fe 100644 --- a/src/Linna/Authorization/UserTrait.php +++ b/src/Linna/Authorization/UserTrait.php @@ -47,6 +47,10 @@ public function hasUserById(null|int|string $userId): bool return true; } + if (\in_array($userId, \array_column($this->user, 'id'), true)) { + return true; + } + return false; } @@ -59,6 +63,10 @@ public function hasUserById(null|int|string $userId): bool */ public function hasUserByName(string $userName): bool { + if (isset($this->user[$userName])) { + return true; + } + if (\in_array($userName, \array_column($this->user, 'name'), true)) { return true; }