Commit f592fe49 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Correction bugs.

parent ea78ac99
......@@ -106,9 +106,10 @@ class UserContext implements ServiceLocatorAwareInterface
*/
public function getSelectableIdentityRoles()
{
return array_filter(
$this->getIdentityRoles(),
function($r) { return !($r instanceof NamedRole && !$r->getSelectable()); });
$filter = function($r) { return !($r instanceof NamedRole && !$r->getSelectable()); };
$roles = array_filter($this->getIdentityRoles(), $filter);
return $roles;
}
/**
......@@ -122,17 +123,18 @@ class UserContext implements ServiceLocatorAwareInterface
if (null === $this->getSessionContainer()->selectedIdentityRole) {
if ($this->getIdentity()) {
$roles = $this->getSelectableIdentityRoles();
$this->getSessionContainer()->selectedIdentityRole = reset($roles) ?: null;
$this->setSelectedIdentityRole(reset($roles));
}
}
return $this->getSessionContainer()->selectedIdentityRole;
return $this->normalizedIdentityRole($this->getSessionContainer()->selectedIdentityRole);
}
/**
* Mémorise le rôle courant de l'utilisateur.
* Mémorise en session le rôle spécifié comme étant le rôle courant de l'utilisateur.
* NB: seul l'id du rôle est mémorisé en session.
*
* @param mixed $role
* @param RoleInterface|string $role
* @return \UnicaenAuth\Service\UserContext
*/
public function setSelectedIdentityRole($role)
......@@ -141,7 +143,10 @@ class UserContext implements ServiceLocatorAwareInterface
if (!$this->isRoleValid($role)) {
throw new \Common\Exception\RuntimeException("Rôle spécifié invalide.");
}
$this->getSessionContainer()->selectedIdentityRole = $this->normalizedIdentityRole($role);
if ($role instanceof RoleInterface) {
$role = $role->getRoleId();
}
$this->getSessionContainer()->selectedIdentityRole = $role;
}
else {
unset($this->getSessionContainer()->selectedIdentityRole);
......@@ -158,7 +163,7 @@ class UserContext implements ServiceLocatorAwareInterface
*/
protected function normalizedIdentityRole($role)
{
if (is_object($role)) {
if (!$role || is_object($role)) {
return $role;
}
......@@ -182,6 +187,10 @@ class UserContext implements ServiceLocatorAwareInterface
*/
protected function isRoleValid($role)
{
if ($role instanceof RoleInterface) {
$role = $role->getRoleId();
}
foreach ($this->getIdentityRoles() as $r) {
if ($r instanceof RoleInterface) {
$r = $r->getRoleId();
......
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