簡體   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