Ejemplo n.º 1
0
 /**
  * change the status of this role (enable/disable)
  *
  * @view no view
  * @access public
  */
 public function statusAction()
 {
     $roleRow = new Admin_Model_DbRow_Role($this->dbRole->find($this->checkRoleIdParam()));
     if ($roleRow->get('id')) {
         $roleRow->set('enabled', $roleRow->get('enabled', 0) == 1 ? 0 : 1);
         $this->dbRole->update($roleRow->toDbArray(array('enabled')), $roleRow->get('id'));
     }
     $this->_redirect('admin/role/index');
 }
Ejemplo n.º 2
0
 /**
  * Update the informations for a selected role
  *
  * @return array
  */
 public function saveEditRoleAction()
 {
     $roleModel = new Admin_Model_DbTable_Acl_Role();
     $roleMembers = new Admin_Model_DbTable_Acl_RoleMember();
     $roleInherits = new Admin_Model_DbTable_Acl_RoleInherit();
     $userModel = new Admin_Model_DbTable_Users();
     $groupModel = new Admin_Model_DbTable_Groups();
     $roleRow = new Admin_Model_DbRow_Role($roleModel->find($this->request->getParam('id', 0)));
     $pUsers = Zend_Json_Decoder::decode($this->request->getParam('users', ''));
     $pGroups = Zend_Json_Decoder::decode($this->request->getParam('groups', ''));
     $pRoles = Zend_Json_Decoder::decode($this->request->getParam('roles', ''));
     $errors = array();
     if (strtolower($this->request->getParam('name', '')) !== strtolower($roleRow->get('name'))) {
         if ($roleModel->fetchRowByRoleName($this->request->getParam('name', ''))) {
             return $this->responseFailure('Error saving informations', 'The role name is already used');
         }
     }
     // validate the posted users, groups and inherited roles
     if (is_array($pUsers)) {
         $tmp = array();
         foreach ($pUsers as $user) {
             $u = $userModel->find($user);
             if ($u->count() === 1) {
                 $tmp[] = new Admin_Model_DbRow_User($u);
             }
         }
         $pUsers = $tmp;
     }
     if (is_array($pGroups)) {
         $tmp = array();
         foreach ($pGroups as $group) {
             $g = $groupModel->find($group);
             if ($g->count() === 1) {
                 $tmp[] = new Admin_Model_DbRow_Group($g);
             }
         }
         $pGroups = $tmp;
     }
     if (is_array($pRoles)) {
         $tmp = array();
         foreach ($pRoles as $role) {
             $r = $roleModel->find($role);
             if ($r->count() === 1) {
                 $tmp[] = new Admin_Model_DbRow_Role($r);
             }
         }
         $pRoles = $tmp;
     }
     if ($roleRow->get('id')) {
         $roleRow->fromArray(array('name' => $this->request->getParam('name'), 'description' => $this->request->getParam('description', ''), 'enabled' => $this->request->getParam('enabled', 'false') == 'true' ? 1 : 0));
         $roleModel->update($roleRow->toDbArray(), $roleRow->get('id'));
         $roleMembers->deleteWithRoleId($roleRow->get('id'));
         $roleInherits->deleteWithRoleId($roleRow->get('id'));
         foreach ($pGroups as $group) {
             $roleMembers->insert($roleRow->get('id'), $group->get('id'), Admin_Model_DbTable_Acl_RoleMember::MEMBER_TYPE_GROUP);
         }
         foreach ($pUsers as $user) {
             $roleMembers->insert($roleRow->get('id'), $user->get('id'), Admin_Model_DbTable_Acl_RoleMember::MEMBER_TYPE_USER);
         }
         foreach ($pRoles as $inheritRole) {
             // do not add self row als inherit role, could cause loop in acl
             if ($inheritRole != $roleRow->get('id')) {
                 $roleInherits->insert($roleRow->get('id'), $inheritRole->get('id'));
             }
         }
         return $this->responseSuccess();
     }
     return $this->responseFailure('Error saving informations', 'Unknown Role ID. Editing not possible');
 }