L'inscription Classeo se fait via invitation : un admin crée un compte, l'utilisateur reçoit un lien d'activation par email pour définir son mot de passe. Ce flow sécurisé évite les inscriptions non autorisées et garantit que seuls les utilisateurs légitimes accèdent au système. Points clés de l'implémentation : - Tokens d'activation à usage unique stockés en cache (Redis/filesystem) - Validation du consentement parental pour les mineurs < 15 ans (RGPD) - L'échec d'activation ne consume pas le token (retry possible) - Users dans un cache séparé sans TTL (pas d'expiration) - Hot reload en dev (FrankenPHP sans mode worker) Story: 1.3 - Inscription et activation de compte
114 lines
3.2 KiB
Twig
114 lines
3.2 KiB
Twig
<!DOCTYPE html>
|
|
<html lang="fr">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Compte activé - Classeo</title>
|
|
<style>
|
|
body {
|
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
line-height: 1.6;
|
|
color: #333;
|
|
max-width: 600px;
|
|
margin: 0 auto;
|
|
padding: 20px;
|
|
}
|
|
.header {
|
|
text-align: center;
|
|
padding: 20px 0;
|
|
border-bottom: 2px solid #4f46e5;
|
|
}
|
|
.header h1 {
|
|
color: #4f46e5;
|
|
margin: 0;
|
|
font-size: 28px;
|
|
}
|
|
.content {
|
|
padding: 30px 0;
|
|
}
|
|
.success-icon {
|
|
text-align: center;
|
|
padding: 20px;
|
|
}
|
|
.success-icon span {
|
|
display: inline-block;
|
|
width: 60px;
|
|
height: 60px;
|
|
background-color: #10b981;
|
|
border-radius: 50%;
|
|
line-height: 60px;
|
|
color: white;
|
|
font-size: 30px;
|
|
}
|
|
.info-box {
|
|
background-color: #f3f4f6;
|
|
border-radius: 8px;
|
|
padding: 20px;
|
|
margin: 20px 0;
|
|
}
|
|
.info-box p {
|
|
margin: 5px 0;
|
|
}
|
|
.button {
|
|
display: inline-block;
|
|
background-color: #4f46e5;
|
|
color: white;
|
|
text-decoration: none;
|
|
padding: 12px 24px;
|
|
border-radius: 6px;
|
|
font-weight: 500;
|
|
}
|
|
.button:hover {
|
|
background-color: #4338ca;
|
|
}
|
|
.footer {
|
|
text-align: center;
|
|
padding: 20px 0;
|
|
border-top: 1px solid #e5e7eb;
|
|
color: #6b7280;
|
|
font-size: 14px;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="header">
|
|
<h1>Classeo</h1>
|
|
</div>
|
|
|
|
<div class="content">
|
|
<div class="success-icon">
|
|
<span>✓</span>
|
|
</div>
|
|
|
|
<h2 style="text-align: center;">Votre compte est activé !</h2>
|
|
|
|
<p>Bonjour,</p>
|
|
|
|
<p>Nous vous confirmons que votre compte Classeo a été activé avec succès.</p>
|
|
|
|
<div class="info-box">
|
|
<p><strong>Email :</strong> {{ email }}</p>
|
|
<p><strong>Rôle :</strong> {{ role }}</p>
|
|
</div>
|
|
|
|
<p>Vous pouvez maintenant vous connecter à Classeo pour accéder à toutes les fonctionnalités disponibles.</p>
|
|
|
|
<p style="text-align: center; margin: 30px 0;">
|
|
<a href="{{ loginUrl }}" class="button">Se connecter</a>
|
|
</p>
|
|
|
|
<p><strong>Conseils de sécurité :</strong></p>
|
|
<ul>
|
|
<li>Ne partagez jamais votre mot de passe</li>
|
|
<li>Déconnectez-vous après utilisation sur un ordinateur partagé</li>
|
|
<li>Contactez votre établissement en cas de problème d'accès</li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="footer">
|
|
<p>Cet email a été envoyé automatiquement par Classeo.</p>
|
|
<p>Si vous n'êtes pas à l'origine de cette action, veuillez contacter votre établissement.</p>
|
|
</div>
|
|
</body>
|
|
</html>
|