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