public function actionEditPrem() { if ($this->_isPost()) { $roleValue = strtolower($_POST['role_value']); $selectIds = $_POST['Id']; if (!$selectIds) { $selectIds = array(); } $dataList = $this->_modelAct->findAll(); foreach ($dataList as &$value) { if ($value['allow'] == RBAC_EVERYONE) { continue; } //如果是所有用户将跳过不执行 if (empty($value['allow'])) { $roles = array(); } else { $roles = explode(',', $value['allow']); //获取当前模板的所有角色 } $key = array_search($value['Id'], $selectIds); //搜索用户是否选中此模块 if ($key === false) { //如果没有找到,就表示用户让角色对此模块没有权限,将更新此模块删除allow字段里这个角色 $rolesKey = array_search($roleValue, $roles); if ($rolesKey !== false) { unset($roles[$rolesKey]); } //如果有这个角色,将删除这个角色 $roles = implode(',', $roles); $updateArr = array('allow' => $roles); } else { //否则将加上这个角色,并且更新allow字段 $rolesKey = array_search($roleValue, $roles); if ($rolesKey !== false) { continue; } //如果找到此值,就说明此模块已经有这个角色,不用做操作. array_push($roles, $roleValue); $roles = implode(',', $roles); $updateArr = array('allow' => $roles); } $this->_modelAct->update($updateArr, "Id={$value['Id']}"); } $rbac = $this->_getGlobalData('Util_Rbac', 'object'); $rbac->createAct(); $this->_utilMsg->showMsg('更新成功', 1); } else { #------获得菜单项一维数组------# $this->_modelMenu = $this->_getGlobalData('Model_Menu', 'object'); $menuList = $this->_modelMenu->findAll(); $menuArr = array(); foreach ($menuList as $value) { $menuArr[$value['value']] = $value['name']; } #------获得菜单项一维数组------# $roleValue = strtolower($_GET['role_value']); $dataList = $this->_modelAct->findAll(); $controlList = array(); $actionList = array(); $selectedList = array(); foreach ($dataList as &$value) { $value['value'] = "{$menuArr[$value['value']]}.{$value['value']}"; $roles = explode(',', $value['allow']); if (in_array($roleValue, $roles) || $value['allow'] == RBAC_EVERYONE) { array_push($selectedList, $value['Id']); } if ($value['parent_id'] == 0) { array_push($controlList, $value); } else { array_push($actionList, $value); } } $controlList = $this->_modelAct->getTtwoArrConvertOneArr($controlList, 'Id', 'value'); $checkBox = ''; foreach ($controlList as $key => $value) { $checkBox .= '<tr><td align="left">'; $checked = in_array($key, $selectedList) ? 'checked="checked"' : ''; $checkBox .= "<input type='checkbox' value={$key} name='Id[]' {$checked} /><b>{$value}</b><hr />"; foreach ($actionList as $childValue) { if ($childValue['parent_id'] == $key) { $checked = in_array($childValue['Id'], $selectedList) ? 'checked="checked"' : ''; $checkBox .= " →<input type='checkbox' value={$childValue['Id']} name='Id[]' {$checked} />{$childValue['value']}<br/>"; } } $checkBox .= '</td></tr>'; } $this->_view->assign('checkBox', $checkBox); $this->_view->assign('roleValue', $roleValue); $this->_view->assign('css', $this->_view->get_curCss()); $this->_utilMsg->createNavBar(); $this->_view->display(); } }
/** * 用户权限分配 */ private function _userAct() { if ($this->_isPost()) { $userId = $_POST['user_id']; $idArr = $_POST['Id']; if ($idArr) { $idArr = implode(',', $idArr); } else { $idArr = null; } $this->_modelUser->update(array('act' => $idArr), "Id={$userId}"); $this->_utilMsg->showMsg('增加权限成功', 1, Tools::url(CONTROL, ACTION)); } else { $moudlesUrl = $this->_getMoudlesUrl(); $this->_view->assign('moudlesUrl', $moudlesUrl); #------获得菜单项一维数组------# $this->_modelMenu = $this->_getGlobalData('Model_Menu', 'object'); $menuList = $this->_modelMenu->findAll(); $menuArr = array(); foreach ($menuList as $value) { $menuArr[$value['value']] = $value['name']; } #------获得菜单项一维数组------# $userId = Tools::coerceInt($_GET['user_id']); $this->_modelAct = $this->_getGlobalData('Model_Act', 'object'); $dataList = $this->_modelAct->getUseRoleAct($userId); $controlList = array(); $actionList = array(); $selectedList = array(); foreach ($dataList as &$value) { if ($value['selected']) { $selectedList[$value['Id']] = $value['selected']; } if ($value['parent_id'] == 0) { array_push($controlList, $value); } else { array_push($actionList, $value); } } $checkBox = ''; foreach ($controlList as $key => $value) { $checkBox .= '<tr><td align="left">'; $checked = array_key_exists($value['Id'], $selectedList) ? 'checked="checked"' : ''; if ($checked != '') { if ($selectedList[$value['Id']] == 1) { $checked .= " disabled='disabled'' "; } //如果等于1就表示这个选中的按钮是通过角色选中的 } $checkBox .= "<input type='checkbox' value='{$value['value']}' name='Id[]' {$checked} /><b>{$menuArr[$value['value']]}.{$value['value']}</b><hr />"; foreach ($actionList as $childValue) { if ($childValue['parent_id'] == $value['Id']) { $checked = array_key_exists($childValue['Id'], $selectedList) ? 'checked="checked"' : ''; if ($checked != '') { if ($selectedList[$childValue['Id']] == 1) { $checked .= " disabled='disabled'' "; } //如果等于1就表示这个选中的按钮是通过角色选中的 } $checkBox .= " →<input type='checkbox' value='{$childValue['value']}' name='Id[]' {$checked} />{$menuArr[$childValue['value']]}.<a href='javascript:;' val_data='{$childValue['value']}' name='user_act'>{$childValue['value']}</a><br/>"; } } $checkBox .= '</td></tr>'; } $this->_view->assign('checkBox', $checkBox); $this->_utilMsg->createNavBar(); $this->_view->set_tpl(array('body' => 'User/UserAct.html')); $this->_view->display(); } }