Les parents doivent pouvoir suivre la scolarité de leurs enfants (notes, emploi du temps, devoirs). Cela nécessite un lien formalisé entre le compte parent et le compte élève, géré par les administrateurs. Le lien est établi soit manuellement via l'interface d'administration, soit automatiquement lors de l'activation du compte parent lorsque l'invitation inclut un élève cible. Ce lien conditionne l'accès aux données scolaires de l'enfant (autorisations vérifiées par un voter dédié).
42 lines
987 B
PHP
42 lines
987 B
PHP
<?php
|
|
|
|
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,
|
|
public string $email,
|
|
public string $role,
|
|
public string $firstName,
|
|
public string $lastName,
|
|
public ?string $dateNaissance = null,
|
|
array $roles = [],
|
|
public ?string $studentId = null,
|
|
public ?string $relationshipType = null,
|
|
) {
|
|
$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;
|
|
}
|
|
}
|