Commit 97bd8de7 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Correction gros oubli : en réalité, le rôle courant sélectionné n'était pas du...

Correction gros oubli : en réalité, le rôle courant sélectionné n'était pas du tout fourni aux ACL (module BjyAuthorize).
parent f0ded2fe
......@@ -32,11 +32,36 @@ class Chain implements ProviderInterface, ServiceLocatorAwareInterface, EventMan
protected $roles;
/**
* Retrieve roles for the current identity
* Retourne lee roles de l'utilisateur courant.
* Si un rôle courant est sélectionné, c'est lui qu'on retourne.
*
* @return string[]|RoleInterface[]
*/
public function getIdentityRoles()
{
$selectedIdentityRole = $this->getSelectedIdentityRole();
$allRoles = $this->getAllIdentityRoles();
$roles = $selectedIdentityRole ? array($selectedIdentityRole) : $allRoles;
return $roles;
}
/**
* Retourne l'éventuel rôle courant sélectionné.
*
* @return mixed
*/
private function getSelectedIdentityRole()
{
return $this->getServiceLocator()->get('AuthUserContext')->getSelectedIdentityRole();
}
/**
* Collecte tous les rôles de l'utilisateur.
*
* @return array
*/
public function getAllIdentityRoles()
{
if (null !== $this->roles) {
return $this->roles;
......@@ -71,6 +96,8 @@ class Chain implements ProviderInterface, ServiceLocatorAwareInterface, EventMan
unset($this->roles['user']);
}
// var_dump($this->roles);
return $this->roles;
}
......
......@@ -84,23 +84,22 @@ class UserContext implements ServiceLocatorAwareInterface
}
/**
* Retourne les rôles de l'utilisateur courant.
* Retourne tous les rôles de l'utilisateur courant, pas seulement le rôle courant sélectionné.
*
* @return array
*/
public function getIdentityRoles()
{
if (null === $this->identityRoles) {
$authorize = $this->getServiceLocator()->get('BjyAuthorize\Service\Authorize');
$identityProvider = $authorize->getIdentityProvider();
$this->identityRoles = $identityProvider->getIdentityRoles();
$identityProvider = $this->getIdentityProvider();
$this->identityRoles = $identityProvider->getAllIdentityRoles();
}
return $this->identityRoles;
}
/**
* Retourne les rôles de l'utilisateur courant qui peuvent être sélectionnés.
* Retourne parmi tous les rôles de l'utilisateur courant ceux qui peuvent être sélectionnés.
*
* @return array
*/
......@@ -127,7 +126,12 @@ class UserContext implements ServiceLocatorAwareInterface
}
}
return $this->normalizedIdentityRole($this->getSessionContainer()->selectedIdentityRole);
$role = $this->normalizedIdentityRole($this->getSessionContainer()->selectedIdentityRole);
if ($this->isRoleValid($role)) {
return $role;
}
return null;
}
/**
......@@ -203,6 +207,17 @@ class UserContext implements ServiceLocatorAwareInterface
return false;
}
/**
*
* @return \UnicaenAuth\Provider\Identity\Chain
*/
private function getIdentityProvider()
{
$authorize = $this->getServiceLocator()->get('BjyAuthorize\Service\Authorize');
return $authorize->getIdentityProvider(); /* @var $identityProvider \UnicaenAuth\Provider\Identity\Chain */
}
/**
* Retourne le stockage en session utilisé pour mémoriser le profil
* sélectionné par l'utilsateur.
......
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