首页 php教程 PHP源码 Authority.class.php 修改待验证的权限$name如果权限列表里面不存在则默认有该权限

Authority.class.php 修改待验证的权限$name如果权限列表里面不存在则默认有该权限

May 26, 2016 am 08:21 AM

php代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

//获得权限$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];

    }

登录后复制
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)