feat: Attribution de rôles multiples par utilisateur
Les utilisateurs Classeo étaient limités à un seul rôle, alors que dans la réalité scolaire un directeur peut aussi être enseignant, ou un parent peut avoir un rôle vie scolaire. Cette limitation obligeait à créer des comptes distincts par fonction. Le modèle User supporte désormais plusieurs rôles simultanés avec basculement via le header. L'admin peut attribuer/retirer des rôles depuis l'interface de gestion, avec des garde-fous : pas d'auto- destitution, pas d'escalade de privilèges (seul SUPER_ADMIN peut attribuer SUPER_ADMIN), vérification du statut actif pour le switch de rôle, et TTL explicite sur le cache de rôle actif.
This commit is contained in:
@@ -4,8 +4,18 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Administration\Application\Command\InviteUser;
|
||||
|
||||
use InvalidArgumentException;
|
||||
|
||||
use function is_string;
|
||||
|
||||
final readonly class InviteUserCommand
|
||||
{
|
||||
/** @var string[] */
|
||||
public array $roles;
|
||||
|
||||
/**
|
||||
* @param string[] $roles
|
||||
*/
|
||||
public function __construct(
|
||||
public string $tenantId,
|
||||
public string $schoolName,
|
||||
@@ -14,6 +24,16 @@ final readonly class InviteUserCommand
|
||||
public string $firstName,
|
||||
public string $lastName,
|
||||
public ?string $dateNaissance = null,
|
||||
array $roles = [],
|
||||
) {
|
||||
$resolved = $roles !== [] ? $roles : [$role];
|
||||
|
||||
foreach ($resolved as $r) {
|
||||
if (!is_string($r)) {
|
||||
throw new InvalidArgumentException('Chaque rôle doit être une chaîne de caractères.');
|
||||
}
|
||||
}
|
||||
|
||||
$this->roles = $resolved;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user