0

我正在研究 activecollab 自定义模块,面临权限问题;我在“on_system_permissions.php”处理程序的帮助下添加了权限。但问题是我如何检查登录用户是否具有特定操作权限的代码..

我从 activecollab 其他模块得到以下代码:

class Role extends FwRole implements IHomescreen {

..
..

    function isPeopleManager(){

       $this->getPermissionValue('can_manage_people');

    }
...
...

}

那是检查任何行动的许可吗?或者它只是返回那个动作的一个值?

在上面的课程中,他们使用$this->并通过FwRole扩展了一个类。当我使用FwRole::getPermissionValue('can_manage_people');返回时,它给了我 $this 和 object 的错误。

所以我的问题是我们如何检查代码中特定操作的权限以及如何使用 getPermissionValue() 函数来检索权限是或否..

4

2 回答 2

1

错误是说您调用 $this 但您不在对象上下文中-那是因为您getPermissionValue静态上下文中调用方法...

在您调用的代码中,您FwRole::getPermissionValue('can_manage_people');必须这样做:

$role = new FwRole; // if it needs a parameter in constructor, call it like new FwRole($param);
$permission_value = $role->getPermissionValue('permission');

通过创建类 FwRole 的实例,您创建了 FwRole 对象,因此您在对象上下文中并且错误(您提供)消失了。

于 2012-05-22T12:57:47.600 回答
1

getSystemPermission当您有一个用户实例时,您可以通过执行方法检查该用户是否具有设置为 Yes 的特定权限:

$user = Users::findById(12);

if($user instanceof User) {
  if($user->getSystemPermission('my_permission')) {
    print 'My permission set to Yes';
  } else {
    print 'My permission set to No';
  } // if
} // if

请注意,activeCollab 权限级联(可以相互依赖)。如果您有依赖权限,系统还会检查您是否将父权限设置为是,而不仅仅是这样(例如,manage_projects如果您没有system_access权限,系统将返回 false 以获得权​​限,因为它依赖于它)。

更新

activeCollab 3 中引入了权限级联!

于 2012-05-22T17:04:18.750 回答