作者 Karson
提交者 Gitee

!153 增加移除权限组节点后所有子权限组也一并移除相应权限

Merge pull request !153 from MrCai/pull2fastadmin
@@ -5,6 +5,8 @@ namespace app\admin\controller\auth; @@ -5,6 +5,8 @@ namespace app\admin\controller\auth;
5 use app\admin\model\AuthGroup; 5 use app\admin\model\AuthGroup;
6 use app\common\controller\Backend; 6 use app\common\controller\Backend;
7 use fast\Tree; 7 use fast\Tree;
  8 +use think\Db;
  9 +use think\Exception;
8 10
9 /** 11 /**
10 * 角色组 12 * 角色组
@@ -151,8 +153,22 @@ class Group extends Backend @@ -151,8 +153,22 @@ class Group extends Backend
151 $rules = in_array('*', $currentrules) ? $rules : array_intersect($currentrules, $rules); 153 $rules = in_array('*', $currentrules) ? $rules : array_intersect($currentrules, $rules);
152 $params['rules'] = implode(',', $rules); 154 $params['rules'] = implode(',', $rules);
153 if ($params) { 155 if ($params) {
154 - $row->save($params);  
155 - $this->success(); 156 + Db::startTrans();
  157 + try {
  158 + $row->save($params);
  159 + $children_auth_groups = model("AuthGroup")->all(['id'=>['in',implode(',',(Tree::instance()->getChildrenIds($row->id)))]]);
  160 + $childparams = [];
  161 + foreach ($children_auth_groups as $key=>$children_auth_group) {
  162 + $childparams[$key]['id'] = $children_auth_group->id;
  163 + $childparams[$key]['rules'] = implode(',', array_intersect(explode(',', $children_auth_group->rules), $rules));
  164 + }
  165 + model("AuthGroup")->saveAll($childparams);
  166 + Db::commit();
  167 + $this->success();
  168 + }catch (Exception $e){
  169 + Db::rollback();
  170 + $this->error($e->getMessage());
  171 + }
156 } 172 }
157 $this->error(); 173 $this->error();
158 return; 174 return;