/**
  * {@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;
     }
 }
示例#2
0
 /**
  * Update role field.
  *
  * @param AbstractRole $role
  * @param ObjectRepository $repository
  * @return bool
  */
 protected function updateRole(AbstractRole $role, ObjectRepository $repository)
 {
     if ($role->getRole()) {
         return true;
     }
     $roleValue = $role->generateUniqueRole();
     if ($repository->findOneBy(['role' => $roleValue])) {
         return false;
     }
     $role->setRole($roleValue, false);
     return true;
 }
示例#3
0
 /**
  * Constructor
  *
  * The real implementation of this method is auto generated.
  *
  * IMPORTANT: If the derived class has own constructor it must call parent constructor.
  *
  * {@inheritdoc}
  */
 public function __construct($role)
 {
     parent::__construct($role);
 }
 /**
  * {@inheritDoc}
  */
 public function process(AbstractRole $role)
 {
     $this->originalAccount = $role->getAccount();
     return parent::process($role);
 }