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