[英]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.