我想在我的自定义工作流程函数中使用isPermitted()
方法,但它似乎没有按预期工作,即使对于我的用户无法访问的记录,我的日志也会将其发回给我。
如果我在方法isPermitted()
(vtigercrm/include/utils/UserInfoUtil.php)
中登录,当我与其他用户(207)登录时,current_user为1。
但是,如果isPermitted
方法在类Vtiger_Save_Actions
中被调用,则当前用户是正确的。
你能告诉我为什么如果我在我的自定义函数中调用isPermitted
,当前用户为1,如果isPermitted
被Vtiger_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