…
- professor adds student e-mails → each gets a 'choose your password' link (Resend batch, 14 d)
- /mot-de-passe?token= page (activation or reset), password strength meter, consent on first login
- 'Première connexion ou mot de passe oublié' → /auth/forgot (registered addresses only, 60 min link)
- students tab: invite on create, per-student resend, invite-all pending, activated/invited status
- access code removed (endpoints, UI, config); legacy /connexion?token= links still honoured
- services/mail.py: Resend HTTP API (single + batch) with SMTP fallback, HTML templates in UQO brand
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>