/** * 保存用户组对应的权限 */ 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(); } }
/** * 用户组绑定权限 */ 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)); }
/** * 生成权限列表 */ 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'); }