Exemple #1
0
 /**
  * 保存用户组对应的权限
  */
 static function saveAccess($group_id, $access)
 {
     GroupAccess::model()->deleteAllByAttributes(array('group_id' => $group_id));
     foreach ($access as $access_id) {
         $model = new GroupAccess();
         $model->group_id = $group_id;
         $model->access_id = $access_id;
         $model->save();
     }
 }
Exemple #2
0
 /**
  * 用户组绑定权限
  */
 public function actionIndex($id)
 {
     $id = (int) $id;
     $model = Group::model()->findByPk($id);
     if ($model->access) {
         foreach ($model->access as $g) {
             $access[] = $g->access_id;
         }
     }
     $cache = cache('auth_controller_file');
     if (!$cache) {
         $d = $this->_get_modules(\Yii::getPathOfAlias('application.modules'));
         if ($d) {
             Access::generate($d);
         }
         DirHelper::$kep_list_file = false;
         cache('auth_controller_file', true);
     }
     $rows = DB::all('access', array('select' => "id,name,pid"));
     foreach ($rows as $v) {
         $out[$v['id']] = $v;
     }
     $rows = ArrHelper::_tree_id($rows);
     if ($_POST) {
         $auth = $_POST['auth'];
         GroupAccess::saveAccess($id, $auth);
         cache('acl', false);
         flash('success', __('set access success'));
         $this->redirect(url('admin/auth/index', array('id' => $id)));
     }
     return $this->render('index', array('rows' => $rows, 'out' => $out, 'model' => $model, 'id' => $id, 'access' => $access));
 }
Exemple #3
0
 /**
  * 生成权限列表
  */
 static function access($id)
 {
     if (!$id) {
         return false;
     }
     if (!cache('acl')) {
         $model = User::model()->findByPk($id);
         if ($model->groups) {
             //调用 models/Group
             foreach ($model->groups as $g) {
                 $access = GroupAccess::model()->findAllByAttributes(array('group_id' => $g->group_id));
                 if ($access) {
                     foreach ($access as $a) {
                         $list[] = GroupAccess::access($a->access_id);
                     }
                 }
             }
         }
         cache('acl', $list);
     }
     return cache('acl');
 }