我想isPermitted()
在我的自定义工作流函数中使用方法,但它似乎没有按预期工作,即使我的用户无权访问的记录,我的日志也会发回 true。
如果我在方法中输入 log,isPermitted()
(vtigercrm/include/utils/UserInfoUtil.php)
则 current_user 为 1,而我与另一个用户 (207) 一起登录。
但是,如果isPermitted
方法是调用,例如,在类Vtiger_Save_Actions
中,当前用户是正确的。
你能告诉我为什么如果我isPermitted
在我的自定义函数中调用当前用户是 1 并且当前用户isPermitted
调用的Vtiger_Save_Actions
是正确的 (207) 吗?
我必须更换$current_user->id by $_SESSION["authenticated_user_id"]
吗?在这种情况下没关系
我的自定义工作流功能如下:
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;
}
热雷米