Exemple #1
0
 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 .= "&nbsp;&nbsp;&nbsp;→<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();
     }
 }
Exemple #2
0
 /**
  * 用户权限分配 
  */
 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 .= "&nbsp;&nbsp;&nbsp;→<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();
     }
 }