Commit bff5eb57 authored by Laurent Lécluse's avatar Laurent Lécluse
Browse files

Possibilité de retourner la liste de tous les rôles issus de l'ensemble des...

Possibilité de retourner la liste de tous les rôles issus de l'ensemble des fournisseurs de rôles depuis le service Authorize "augmenté".

Utilisation de la liste pour retrouver un rôle à partir de son ID dans le UserContext.
parent 81ccb133
......@@ -5,34 +5,45 @@ namespace UnicaenAuth\Provider\Role;
use Doctrine\DBAL\DBALException;
use PDOException;
use BjyAuthorize\Provider\Role\ObjectRepositoryProvider;
use UnicaenAuth\Entity\Db\Role;
/**
* Role provider based on a {@see \Doctrine\Common\Persistence\ObjectRepository}
*/
class DbRole extends ObjectRepositoryProvider
{
/**
* @var Role
*/
protected $roles;
/**
* {@inheritDoc}
*/
public function getRoles()
{
try {
$roles = parent::getRoles();
}
catch (DBALException $exc) {
$roles = [];
}
catch (PDOException $exc) {
$roles = [];
}
if (null === $this->roles){
try {
$this->roles = parent::getRoles();
}
catch (DBALException $exc) {
$this->roles = [];
}
catch (PDOException $exc) {
$this->roles = [];
}
/* @var $roleObj \BjyAuthorize\Acl\Role */
foreach ($roles as $roleObj) {
if (!$roleObj->getParent()) {
$roleObj->setParent('user');
/* @var $roleObj \BjyAuthorize\Acl\Role */
foreach ($this->roles as $roleObj) {
if (!$roleObj->getParent()) {
$roleObj->setParent('user');
}
}
}
return $roles;
return $this->roles;
}
return $this->roles;
}
}
\ No newline at end of file
......@@ -91,16 +91,29 @@ class UserContext extends AbstractService
/**
* Retourne tous les rôles de l'utilisateur courant, pas seulement le rôle courant sélectionné.
*
* @return array
* Les clés du tableau sont les ID de rôles, les valeurs sont les objets Role
*
* @return Role[]
*/
public function getIdentityRoles()
{
if (null === $this->identityRoles) {
$this->identityRoles = [];
$roles = $this->getServiceAuthorize()->getRoles();
$identityProvider = $this->getIdentityProvider();
if ($identityProvider instanceof Chain) {
$this->identityRoles = $identityProvider->getAllIdentityRoles();
$iRoles = $identityProvider->getAllIdentityRoles();
} else {
$this->identityRoles = $identityProvider->getIdentityRoles();
$iRoles = $identityProvider->getIdentityRoles();
}
foreach ($iRoles as $role) {
if ($role instanceof Role) {
$this->identityRoles[$role->getRoleId()] = $role;
} elseif (isset($roles[$role])) {
$role = $roles[$role];
$this->identityRoles[$role->getRoleId()] = $role;
}
}
}
......@@ -154,7 +167,7 @@ class UserContext extends AbstractService
$roles = $this->getServiceAuthorize()->getRoles(); // Récupération de tous les rôles du provider
if (isset($roles[$roleId])) {
$role = $roles[$roleId];
}else{
} else {
$role = null;
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment