本帖最后由 xxz0318 于 2012-4-23 13:54 编辑
后台管理团队 关于权限分配的BUG
详细情况请看图:
首先编辑门户管理员:
我给门户管理员赋予论坛的权限
提交保存后 正常
第二步:添加团队成员 并且赋予门户管理员
第三步: 根据实际需求 我不想让这个用户拥有所有门户管理员的权限 所以我编辑下
去掉了后两项(只是举例)
然后提交保存,
保存后在点击编辑,这个时候去掉的两项权限依然还在
打开源文件后 看了下 原理,发现一个地方不对,
官方是用数据库里查出来的权限来和提交过来的权限对比, 但是提交过来的是一维数组 而查出来的是二维数组,两个数组去对比找不同,是根本查不出来的,所以出现上述错误.
附:
解决办法一:
/source/admincp/admincp_founder.php 第302行下面加上- //Darren添加
- $dsnewperms = array();
- foreach($perms as $value){
- $dsnewperms[] = $value['perm'];
- }
- //END
复制代码 然后把第303行修改为
$customperm = serialize(array_diff($dsnewperms, $_permnew));//DARREN修改
即可解决上述办法.
解决办法二:
C::t('common_admincp_perm')->fetch_all_by_cpgroupid($cpgroupidnew);
直接把办法一中的循环放在 fetch_all_by_cpgroupid 中,然后返回一维数组.
办法二需要注意的是 在其他地方有没有用到 fetch_all_by_cpgroupid 不知道会不会影响到其他的.
|