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); }