检查自定义工作流功能的权限

时间:2017-03-15 15:33:11

标签: php vtiger vtigercrm

我想在我的自定义工作流程函数中使用isPermitted()方法,但它似乎没有按预期工作,即使对于我的用户无法访问的记录,我的日志也会将其发回给我。

如果我在方法isPermitted() (vtigercrm/include/utils/UserInfoUtil.php)中登录,当我与其他用户(207)登录时,current_user为1。

但是,如果isPermitted方法在类Vtiger_Save_Actions中被调用,则当前用户是正确的。

你能告诉我为什么如果我在我的自定义函数中调用isPermitted,当前用户为1,如果isPermittedVtiger_Save_Actions调用,则当前用户是正确的用户(207)?

我必须替换$current_user->id by $_SESSION["authenticated_user_id"]吗?在这种情况下,没关系

我的自定义worflow功能如下:

function getExpenseType(){
    global $adb,$log, $current_user;

    $log->debug("ALTAIR getExpenseType OK");

    $sql = $adb->pquery( "SELECT expensetypeid 
    FROM vtiger_expensetype
    INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_expensetype.expensetypeid 
    WHERE vtiger_crmentity.deleted = 0" );

    $rows = $adb->num_rows($sql);

    for ( $i = 0; $i < $rows; $i++ ) {
        $recordId = $adb->query_result($sql, $i, 'expensetypeid');
        $moduleName = getSalesEntityType($recordId);

        if ( Users_Privileges_Model::isPermitted($moduleName, 'DetailView', $recordId) ) {
            $value[] = $recordId;
        }
    }

    $record = implode(',',$value);
    $log->debug("LOG: ExpenseType: ".json_encode($record));
}

如果我在isPermitted()方法中添加日志跟踪,则current_user为1而207(当前登录的用户):

function isPermitted($module,$actionname,$record_id='')
{
    global $log;
    $log->debug("Entering isPermitted(".$module.",".$actionname.",".$record_id.") method ...");

    global $adb;
    global $current_user;
    global $seclog;
    require('user_privileges/user_privileges_'.$current_user->id.'.php');
    require('user_privileges/sharing_privileges_'.$current_user->id.'.php');

    $log->debug("LOG: Current user: ".$current_user->id);

    $permission = "no";
    if(($module == 'Users' || $module == 'Home' || $module == 'uploads') && $_REQUEST['parenttab'] != 'Settings')
    {
        //These modules dont have security right now
        $permission = "yes";
        $log->debug("Exiting isPermitted method ...");
        return $permission;

    }

的Jérémy

0 个答案:

没有答案