我目前正在研究用 PHP 重新构建一个不久前构建的权限系统。当前版本具有确切的权限,因此对于管理员,您将拥有以下权限:
acl.manage.self
acl.manage.others
这意味着用户有权管理他自己以及其他人的权限。
然而,在开发一些新应用程序时,我尝试通过以下方式让自己访问我的整个应用程序来利用当前的权限系统:
lst.*
这样我就不必给自己一堆.view
.manage
等等。
似乎现有系统不理解 * 通配符。所以我坐在这里试图重写“has_permission”
因此,我当前的工作测试环境创建了一个具有以下权限的用户:
array(3) { [0]=> string(1) "*" [1]=> string(15) "fake.permission" [2]=> string(27) "none.of.these.should.matter" }
从技术上讲,唯一重要的权限是 [0],它表示我应该有权做任何我想做的事情。
我不知道如何在我的方法中实现这个流程:
function has_perm($perm){
//if I am checking if I have the perm 'acl.manage.all'
//This function should return true if I have any of the following:
// *, acl.*, acl.manage.*, acl.manage.all
//exact check
foreach($this->perms as $p){
if($p===$perm){ return true; }
}
}
任何朝着正确方向的轻推都会很棒。