用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - php代码库

Authority.class.php 修改待验证的权限$name如果权限列表里

2014-12-25 作者: php源代码大全举报

[php]代码库

//获得权限$name 可以是字符串或数组或逗号分割, uid为 认证的用户id, $or 是否为or关系,为true是, name为数组,只要数组中有一个条件通过则通过,如果为false需要全部条件通过。
//最后修改功能:待验证的权限$name如果权限列表里面不存在则默认有该权限
public function getAuth($name, $uid, $relation='or') {
    if (!$this->_config['AUTH_ON'])
        return true;
    $authList = $this->getAuthList($uid);
    if (is_string($name)) {
        if (strpos($name, ',') !== false) {
            $name = explode(',', $name);
        } else {
            $name = array($name);
        }
    }
    //修改部分开始
    foreach($name as $key=>$val){
        if(!$this->isExistsRule($val)){
            unset($name[$key]);
        }
    }
    if(count($name)==0){
        return true;
    }
    //修改部分结束
 
    $list = array(); //有权限的name
    foreach ($authList as $val) {
        if (in_array($val, $name))
            $list[] = $val;
    }
    if ($relation=='or' and !empty($list)) {
        return true;
    }
    $diff = array_diff($name, $list);
    if ($relation=='and' and empty($diff)) {
        return true;
    }
    return false;
}
/**
 * @desc 判断数据库是否存在权限
 * @param string $name RuleName
 */
public function isExistsRule($name){
    static $rule = array();
    if(!empty($rule[$name])){
        return $rule[$name];
    }
    $rule[$name] = M()->table($this->_config['AUTH_RULE'])->where(array('name'=>$name))->count();
    return $rule[$name];
}


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...