/** * {@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; } }
/** * {@inheritDoc} */ protected function onSuccess(AbstractRole $role, array $appendUsers, array $removeUsers) { $this->fixUsersByAccount($role, $appendUsers, $removeUsers); parent::onSuccess($role, $appendUsers, $removeUsers); }