feat: Liaison parents-enfants avec gestion des tuteurs
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é).
This commit is contained in:
@@ -54,7 +54,9 @@ final class CreateTestActivationTokenCommand extends Command
|
||||
->addOption('school', null, InputOption::VALUE_OPTIONAL, 'School name', 'École de Test')
|
||||
->addOption('minor', null, InputOption::VALUE_NONE, 'Create a minor user (requires parental consent)')
|
||||
->addOption('tenant', null, InputOption::VALUE_OPTIONAL, 'Tenant subdomain (ecole-alpha, ecole-beta)', 'ecole-alpha')
|
||||
->addOption('base-url', null, InputOption::VALUE_OPTIONAL, 'Frontend base URL', 'http://localhost:5174');
|
||||
->addOption('base-url', null, InputOption::VALUE_OPTIONAL, 'Frontend base URL', 'http://localhost:5174')
|
||||
->addOption('student-id', null, InputOption::VALUE_OPTIONAL, 'Student UUID for automatic parent-child linking on activation')
|
||||
->addOption('relationship-type', null, InputOption::VALUE_OPTIONAL, 'Relationship type for parent-child linking (père, mère, tuteur, autre)');
|
||||
}
|
||||
|
||||
protected function execute(InputInterface $input, OutputInterface $output): int
|
||||
@@ -185,6 +187,11 @@ final class CreateTestActivationTokenCommand extends Command
|
||||
}
|
||||
|
||||
// Create activation token
|
||||
/** @var string|null $studentId */
|
||||
$studentId = $input->getOption('student-id');
|
||||
/** @var string|null $relationshipType */
|
||||
$relationshipType = $input->getOption('relationship-type');
|
||||
|
||||
$token = ActivationToken::generate(
|
||||
userId: (string) $user->id,
|
||||
email: $email,
|
||||
@@ -192,6 +199,8 @@ final class CreateTestActivationTokenCommand extends Command
|
||||
role: $role->value,
|
||||
schoolName: $schoolName,
|
||||
createdAt: $now,
|
||||
studentId: $studentId,
|
||||
relationshipType: $relationshipType,
|
||||
);
|
||||
|
||||
$this->activationTokenRepository->save($token);
|
||||
@@ -209,6 +218,7 @@ final class CreateTestActivationTokenCommand extends Command
|
||||
['Tenant', $tenantSubdomain],
|
||||
['School', $schoolName],
|
||||
['Minor', $isMinor ? 'Yes (requires parental consent)' : 'No'],
|
||||
['Student ID', $studentId ?? 'N/A'],
|
||||
['Token', $token->tokenValue],
|
||||
['Expires', $token->expiresAt->format('Y-m-d H:i:s')],
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user