/** * Adds new roles from CAS server since last authentication if some was added in CAS-Server. * Is used only if Account was persisted. See persistAccount() method. * * @param string $providerName Provider name. WARNING: not in settings set useStaticProviderNameByPersistingAccounts. * @param Account $account * * @return void * * @todo : move persistAll() at shutdown */ private function updateRolesInAccount($providerName, Account &$account) { $casAttributes = $this->casManager->getCasAttributes($providerName); $casServerRoles = $this->getRoles($providerName, $casAttributes); $accountMustBeUpdated = false; foreach ($casServerRoles as $casServerRole) { $accountMustBeUpdated = $accountMustBeUpdated == true ? $accountMustBeUpdated : !$account->hasRole($casServerRole); $account->addRole($casServerRole); } if ($accountMustBeUpdated) { $this->accountRepository->update($account); } $this->persistenceManager->persistAll(); }