Example #1
0
 public function testAddExtensionFilter()
 {
     $this->assertAttributeEmpty('extensionFilters', $this->handler);
     $actionKey = 'action';
     $entityKey = 'entity';
     $defaultGroup = 'default';
     $this->handler->addExtensionFilter($actionKey, $defaultGroup);
     $this->handler->addExtensionFilter($entityKey, $defaultGroup);
     $expectedFilters = [$actionKey => [$defaultGroup], $entityKey => [$defaultGroup]];
     $this->assertAttributeEquals($expectedFilters, 'extensionFilters', $this->handler);
     // each group added only once
     $this->handler->addExtensionFilter($actionKey, $defaultGroup);
     $this->handler->addExtensionFilter($entityKey, $defaultGroup);
     $this->assertAttributeEquals($expectedFilters, 'extensionFilters', $this->handler);
 }
 /**
  * {@inheritDoc}
  * @throws \Doctrine\DBAL\ConnectionException
  */
 protected function onSuccess(AbstractRole $role, array $appendUsers, array $removeUsers)
 {
     // TODO: When task BB-1046 will be done, remove method removeOriginalRoleFromUsers.
     // In method addNewRoleToUsers before addRole add method removeRole($role). Also needs delete flush;
     /** @var AccountUserRole $role */
     if ($role->getId()) {
         /** @var AccountUserRoleRepository $roleRepository */
         $roleRepository = $this->doctrineHelper->getEntityRepository($role);
         $this->appendUsers = $roleRepository->getAssignedUsers($role);
     }
     $this->loggedAccountUser = $this->securityFacade->getLoggedUser();
     /** @var EntityManager $manager */
     $manager = $this->managerRegistry->getManagerForClass(ClassUtils::getClass($this->loggedAccountUser));
     $connection = $manager->getConnection();
     $connection->setTransactionIsolation(Connection::TRANSACTION_REPEATABLE_READ);
     $connection->beginTransaction();
     try {
         $this->removeOriginalRoleFromUsers($role, $manager);
         AclRoleHandler::onSuccess($this->newRole, $appendUsers, $removeUsers);
         $this->addNewRoleToUsers($role, $manager, $appendUsers, $removeUsers);
         $manager->flush();
         $connection->commit();
     } catch (\Exception $e) {
         $connection->rollBack();
         throw $e;
     }
 }
 /**
  * @param AclRoleHandler $handler
  */
 protected function setRequirementsForHandler(AclRoleHandler $handler)
 {
     $handler->setAclManager($this->aclManager);
     $handler->setAclPrivilegeRepository($this->privilegeRepository);
     $handler->setChainMetadataProvider($this->chainMetadataProvider);
     $handler->setOwnershipConfigProvider($this->ownershipConfigProvider);
     $handler->setManagerRegistry($this->managerRegistry);
     $handler->setDoctrineHelper($this->doctrineHelper);
 }
 /**
  * {@inheritdoc}
  */
 protected function processPrivileges(AbstractRole $role)
 {
     $this->startFrontendProviderEmulation();
     parent::processPrivileges($role);
     $this->stopFrontendProviderEmulation();
 }
 /**
  * {@inheritDoc}
  */
 public function process(AbstractRole $role)
 {
     $this->originalAccount = $role->getAccount();
     return parent::process($role);
 }