ThinkPHP Authority.class.php 修改待验证的权限$name如果权限列表里面不存在则默认有该权限
2014-09-15 11:42
453 查看
//获得权限$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]; }
相关文章推荐
- ThinkPHP Authority.class.php 修改待验证的权限$name如果权限列表里面不存在则默认有该权限
- thinkphp 在数据库更新(save)的时候,如果字段没有被修改,会更新失败 和数据的自动验证,插入的时候可以自动验证,但更新的时候就不能验证了
- PHP ThinkPHP补充。插入(修改)数据时,对默认字段进行自动填充;form表单字段映射成合法字段;"瞻前顾后机制"
- 【自然框架】之通用权限的Demo(二):添加人员、添加账户、添加角色里面的账户以及列表的权限验证
- shell 修改文件的用户权限,如果文件不存在,提示不存在
- 【自然框架】之通用权限的Demo(二):添加人员、添加账户、添加角色里面的账户以及列表的权限验证
- PHPExcel导入导出 若在thinkPHP3.2中使用(无论实例还是静态调用(如new classname或classname::function)都必须加反斜杠,因3.2就命名空间,如/classname
- PHP chmod 函数与批量修改文件目录权限
- HTML、CSS里面关于 id、class、name 属性的区别和用法
- 在OD中如果知道对象指针,如何找该对象的ClassName
- 修改默认的用户权限
- PHP chmod 函数与批量修改文件目录权限
- windows默认文件夹权限(提升权限用) 转至http://www.oioj.net/blog/blog.asp?name=cnbird
- 修改PhpDocumentor默认编码
- magento -- 产品列表的产品自定义顺序以及修改默认排序后的变化
- ORACLE创建表空间、创建用户、更改用户默认表空间以及授权、查看权限(修改表空间大小)
- php:修改目录下文档权限(777,644 )
- 用dom解读xml的时候,如果碰到有命名空间的时候(就是节点名字有:的时候)需要把xml文件中的那个命名空间地址和名字拿出来加到XmlNamespaceManager 里面去
- 详解在读取文章列表时如果针对ClassID从Class表中将ClassName的值读取出来的问题
- 继续摘抄:php页面访问时,统一进行权限验证的设计