繁体   English   中英

activecollab中的模块操作权限

[英]Module action permissions in activecollab

我正在使用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和对象的错误..

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

错误是说你调用$ 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对象,因此您处于对象上下文中并且错误(您提供)已消失。

拥有用户实例时,可以通过执行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权限级联(可以依赖于另一个)。 如果您有相关的权限,系统还要检查是否有父权限设置为Yes,而不仅仅是(例如,系统将返回false为manage_projects权限,如果你没有system_access权限,因为它依赖于它)。

更新

activeCollab 3中引入了权限级联!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM