예제 #1
0
 /**
  * @param AbstractRole $role
  */
 protected function processPrivileges(AbstractRole $role)
 {
     $decodedPrivileges = json_decode($this->form->get('privileges')->getData(), true);
     $formPrivileges = [];
     foreach ($this->privilegeConfig as $fieldName => $config) {
         $privilegesArray = $decodedPrivileges[$fieldName];
         $privileges = [];
         foreach ($privilegesArray as $privilege) {
             $aclPrivilege = new AclPrivilege();
             foreach ($privilege['permissions'] as $name => $permission) {
                 $aclPrivilege->addPermission(new AclPermission($permission['name'], $permission['accessLevel']));
             }
             $aclPrivilegeIdentity = new AclPrivilegeIdentity($privilege['identity']['id'], $privilege['identity']['name']);
             $aclPrivilege->setIdentity($aclPrivilegeIdentity);
             $privileges[] = $aclPrivilege;
         }
         if ($config['fix_values']) {
             $this->fxPrivilegeValue($privileges, $config['default_value']);
         }
         $formPrivileges = array_merge($formPrivileges, $privileges);
     }
     array_walk($formPrivileges, function (AclPrivilege $privilege) {
         $privilege->setGroup($this->getAclGroup());
     });
     $this->privilegeRepository->savePrivileges($this->aclManager->getSid($role), new ArrayCollection($formPrivileges));
     $this->aclCache->clearCache();
 }
예제 #2
0
 /**
  * @param Role $role
  */
 protected function processPrivileges(Role $role)
 {
     $formPrivileges = array();
     foreach ($this->privilegeConfig as $fieldName => $config) {
         $privileges = $this->form->get($fieldName)->getData();
         if ($config['fix_values']) {
             $this->fxPrivilegeValue($privileges, $config['default_value']);
         }
         $formPrivileges = array_merge($formPrivileges, $privileges);
     }
     $this->privilegeRepository->savePrivileges($this->aclManager->getSid($role), new ArrayCollection($formPrivileges));
 }
 public function testSavePrivilegesForExistingRole()
 {
     $extensionKey = 'test';
     $rootOid = new ObjectIdentity($extensionKey, ObjectIdentityFactory::ROOT_IDENTITY_TYPE);
     $class3Ace = $this->getAce(self::getMask(array('VIEW_BASIC', 'CREATE_BASIC')));
     $privileges = new ArrayCollection();
     $privileges[] = self::getPrivilege('test:(root)', array('VIEW' => AccessLevel::SYSTEM_LEVEL, 'CREATE' => AccessLevel::BASIC_LEVEL, 'EDIT' => AccessLevel::NONE_LEVEL));
     $privileges[] = self::getPrivilege('test:Acme\\Class1', array('VIEW' => AccessLevel::SYSTEM_LEVEL, 'CREATE' => AccessLevel::BASIC_LEVEL, 'EDIT' => AccessLevel::NONE_LEVEL));
     $privileges[] = self::getPrivilege('test:Acme\\Class2', array('VIEW' => AccessLevel::SYSTEM_LEVEL, 'CREATE' => AccessLevel::SYSTEM_LEVEL, 'EDIT' => AccessLevel::NONE_LEVEL));
     $privileges[] = self::getPrivilege('test:Acme\\Class3', array('VIEW' => AccessLevel::SYSTEM_LEVEL, 'CREATE' => AccessLevel::BASIC_LEVEL, 'EDIT' => AccessLevel::NONE_LEVEL));
     $sid = $this->getMock('Symfony\\Component\\Security\\Acl\\Model\\SecurityIdentityInterface');
     $this->initSavePrivileges($extensionKey, $rootOid);
     $this->setExpectationsForGetAces(array('test:Acme\\Class3' => array($class3Ace)));
     $this->setExpectationsForSetPermission($sid, array('test:(root)' => array('VIEW_SYSTEM', 'CREATE_BASIC'), 'test:Acme\\Class2' => array('VIEW_SYSTEM', 'CREATE_SYSTEM')));
     $this->setExpectationsForDeletePermission($sid, array('test:Acme\\Class3' => array('VIEW_BASIC', 'CREATE_BASIC')));
     $this->repository->savePrivileges($sid, $privileges);
     $this->validateExpectationsForGetAces();
     $this->validateExpectationsForSetPermission();
     $this->validateExpectationsForDeletePermission();
 }