mirror of https://gitee.com/karson/fastadmin.git
优化菜单规则中的条件判断
parent
ab083686a8
commit
cdebb284c3
|
|
@ -140,7 +140,7 @@ class Auth
|
|||
|
||||
/**
|
||||
* 根据用户id获取用户组,返回值为数组
|
||||
* @param int $uid 用户id
|
||||
* @param int $uid 用户id
|
||||
* @return array 用户所属的用户组 array(
|
||||
* array('uid'=>'用户id','group_id'=>'用户组id','name'=>'用户组名称','rules'=>'用户组拥有的规则id,多个,号隔开'),
|
||||
* ...)
|
||||
|
|
@ -205,9 +205,17 @@ class Auth
|
|||
if (!empty($rule['condition']) && !in_array('*', $ids)) {
|
||||
//根据condition进行验证
|
||||
$user = $this->getUserInfo($uid); //获取用户信息,一维数组
|
||||
$command = preg_replace('/\{(\w*?)\}/', '$user[\'\\1\']', $rule['condition']);
|
||||
@(eval('$condition=(' . $command . ');'));
|
||||
if ($condition) {
|
||||
$nums = 0;
|
||||
$condition = str_replace(['&&', '||'], "\r\n", $rule['condition']);
|
||||
$condition = preg_replace('/\{(\w*?)\}/', '\\1', $condition);
|
||||
$conditionArr = explode("\r\n", $condition);
|
||||
foreach ($conditionArr as $index => $item) {
|
||||
preg_match("/^(\w+)\s?([\>\<\=]+)\s?(.*)$/", trim($item), $matches);
|
||||
if ($matches && isset($user[$matches[1]]) && version_compare($user[$matches[1]], $matches[3], $matches[2])) {
|
||||
$nums++;
|
||||
}
|
||||
}
|
||||
if ($conditionArr && ((stripos($rule['condition'], "||") !== false && $nums > 0) || count($conditionArr) == $nums)) {
|
||||
$rulelist[$rule['id']] = strtolower($rule['name']);
|
||||
}
|
||||
} else {
|
||||
|
|
@ -254,4 +262,4 @@ class Auth
|
|||
|
||||
return $user_info[$uid];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue