Commit 91ad04be authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

- Ajout possibilité de rendre un rôle nommé (NamedRole) non sélectionnable....

- Ajout possibilité de rendre un rôle nommé (NamedRole) non sélectionnable. Cela concerne les applications qui permettent à l'utilisateur de choisir son profil courant parmi les différents rôles qu'il possède.
- Le rôle correspondant à l'identifiant de connexion de d'utilisateur (username) n'est pas sélectionnable.
parent 41456b6b
...@@ -21,17 +21,38 @@ class NamedRole extends \BjyAuthorize\Acl\Role ...@@ -21,17 +21,38 @@ class NamedRole extends \BjyAuthorize\Acl\Role
protected $roleDescription; protected $roleDescription;
/** /**
* @param string|null $roleId * @var bool
*/
protected $selectable = true;
/**
* Constructeur.
*
* @param string|null $id
* @param RoleInterface|string|null $parent * @param RoleInterface|string|null $parent
* @param string $roleName * @param string $name
* @param string $roleDescription * @param string $description
* @param bool $selectable
*/ */
public function __construct($roleId = null, $parent = null, $roleName = null, $roleDescription = null) public function __construct($id = null, $parent = null, $name = null, $description = null, $selectable = true)
{ {
parent::__construct($roleId, $parent); parent::__construct($id, $parent);
$this->setRoleName($roleName ?: $roleId); $this
$this->setRoleDescription($roleDescription ?: null); ->setRoleName($name ?: $id)
->setRoleDescription($description ?: null)
->setSelectable($selectable);
}
/**
* Retourne la représentation littérale de ce rôle.
*
* @return string
*/
public function __toString()
{
return $this->getRoleName() ?: $this->getRoleId();
} }
/** /**
...@@ -77,4 +98,30 @@ class NamedRole extends \BjyAuthorize\Acl\Role ...@@ -77,4 +98,30 @@ class NamedRole extends \BjyAuthorize\Acl\Role
$this->roleDescription = (string) $roleDescription; $this->roleDescription = (string) $roleDescription;
return $this; return $this;
} }
/**
* Teste si ce rôle est sélectionnable par l'utilisateur.
* Cela concerne les applications qui permettent à l'utilisateur de choisir son profil courant
* parmi les différents rôles qu'il possède.
*
* @return bool
*/
public function getSelectable()
{
return $this->selectable;
}
/**
* Spécifie si ce rôle est sélectionnable par l'utilisateur.
* Cela concerne les applications qui permettent à l'utilisateur de choisir son profil courant
* parmi les différents rôles qu'il possède.
*
* @param bool $selectable
* @return \UnicaenAuth\Acl\NamedRole
*/
public function setSelectable($selectable = true)
{
$this->selectable = $selectable;
return $this;
}
} }
\ No newline at end of file
...@@ -5,6 +5,7 @@ namespace UnicaenAuth\Provider\Role; ...@@ -5,6 +5,7 @@ namespace UnicaenAuth\Provider\Role;
use BjyAuthorize\Provider\Role\ProviderInterface; use BjyAuthorize\Provider\Role\ProviderInterface;
use Zend\Authentication\AuthenticationService; use Zend\Authentication\AuthenticationService;
use ZfcUser\Entity\UserInterface; use ZfcUser\Entity\UserInterface;
use UnicaenAuth\Acl\NamedRole;
/** /**
* Fournisseur de rôle retournant le rôle correspondant à l'identifiant de connexion * Fournisseur de rôle retournant le rôle correspondant à l'identifiant de connexion
...@@ -64,7 +65,7 @@ class Username implements ProviderInterface ...@@ -64,7 +65,7 @@ class Username implements ProviderInterface
$identity = $identity['db']; $identity = $identity['db'];
} }
if ($identity instanceof UserInterface) { if ($identity instanceof UserInterface) {
$role = new \UnicaenAuth\Acl\NamedRole($identity->getUsername(), 'user', "Authentifié(e)"); $role = new NamedRole($identity->getUsername(), 'user', "Authentifié(e)", null, false);
$this->roles[] = $role; $this->roles[] = $role;
} }
} }
......
Supports Markdown
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