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,19 +21,40 @@ class NamedRole extends \BjyAuthorize\Acl\Role
protected $roleDescription;
/**
* @param string|null $roleId
* @var bool
*/
protected $selectable = true;
/**
* Constructeur.
*
* @param string|null $id
* @param RoleInterface|string|null $parent
* @param string $roleName
* @param string $roleDescription
* @param string $name
* @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->setRoleDescription($roleDescription ?: null);
$this
->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();
}
/**
* Retourne le nom du rôle.
*
......@@ -77,4 +98,30 @@ class NamedRole extends \BjyAuthorize\Acl\Role
$this->roleDescription = (string) $roleDescription;
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;
use BjyAuthorize\Provider\Role\ProviderInterface;
use Zend\Authentication\AuthenticationService;
use ZfcUser\Entity\UserInterface;
use UnicaenAuth\Acl\NamedRole;
/**
* Fournisseur de rôle retournant le rôle correspondant à l'identifiant de connexion
......@@ -64,7 +65,7 @@ class Username implements ProviderInterface
$identity = $identity['db'];
}
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;
}
}
......
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