Colin Maudry
44031efcd5
feat(auth): oauth_identities table + password_hash nullable ( #88 )
...
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com >
2026-06-24 23:04:18 +02:00
Colin Maudry
ff7aaa54cd
fix(auth): vérification promote_pending_email, purge tokens change-email, fallback login ( #73 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-24 22:25:34 +02:00
Colin Maudry
95f7d80b45
feat(compte): page /compte/admin (email, mot de passe, suppression) ( #73 )
2026-06-24 22:07:05 +02:00
Colin Maudry
6144e3c18d
feat(auth): route delete-account avec confirmation par mot de passe ( #73 )
2026-06-24 18:49:52 +02:00
Colin Maudry
558df9627b
feat(auth): routes change-email + confirm-email-change ( #73 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-24 18:48:08 +02:00
Colin Maudry
90261d4f31
feat(auth): email de confirmation de changement d'adresse ( #73 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-24 18:45:37 +02:00
Colin Maudry
f301a0a336
feat(auth): email en attente (pending_email) + migration ( #73 )
...
Adds pending_email column to users table with idempotent migration.
Implements set_pending_email() and promote_pending_email() for email-change workflow.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-24 18:43:04 +02:00
Colin Maudry
3f1c39d5a6
fix(brevo): passer X-Sib-Sandbox dans le body email, pas en header HTTP ( #87 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-24 16:22:42 +02:00
Colin Maudry
c3408ecc3c
refactor(brevo): utiliser DEVELOPMENT pour le mode sandbox Brevo ( #87 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-24 15:40:46 +02:00
Colin Maudry
162bc550c0
chore(brevo): retirer la config SMTP et les templates Jinja d'email ( #87 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-24 15:34:45 +02:00
Colin Maudry
e4c291a785
feat(brevo): envoyer les emails transactionnels via l'API Brevo v5 ( #87 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-24 15:33:14 +02:00
Colin Maudry
afe99ea79f
fix(auth): utiliser threading.local() pour les connexions SQLite par thread
...
La connexion singleton partagée entre threads causait sqlite3.InterfaceError
lors de requêtes concurrentes sur la page compte.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-24 12:23:55 +02:00
Colin Maudry
c228f7be55
fix(auth): corriger le lien de validation email et l'isolation des tests
...
Le lien de vérification pointait vers la page Dash /verification-email
(qui se contente de rediriger vers /connexion) au lieu de la route
backend /auth/verify-email qui consomme réellement le token et marque
l'email comme vérifié. Conséquence : l'email n'était jamais validé et le
login renvoyait email_not_verified en boucle.
Ajoute aussi MAIL_SUPPRESS_SEND=true au bloc env de pytest : sans cela,
le load_dotenv() de src.app injectait MAIL_SUPPRESS_SEND=false depuis le
.env local, désactivant la suppression d'envoi et faisant échouer les
tests d'auth qui envoient un email (selon l'ordre d'import).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-24 03:55:52 +02:00
Colin Maudry
4e1c610405
feat(auth): découpler MAIL_SUPPRESS_SEND de DEVELOPMENT et logger les emails supprimés
...
Ajoute la variable MAIL_SUPPRESS_SEND pour pouvoir tester l'envoi d'emails
en mode développement sans toucher au flag DEVELOPMENT. Un warning est loggé
à chaque tentative d'envoi supprimée avec la cause et les détails du message.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-24 03:43:55 +02:00
Colin Maudry
49bd1b3036
src/auth/routes.py : route /auth/change-password ( #73 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-20 22:51:40 +02:00
Colin Maudry
6b78abb7fd
src/auth/routes.py : routes de réinitialisation du mot de passe ( #73 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-20 22:50:20 +02:00
Colin Maudry
ff9b3a6092
src/auth/routes.py : routes /auth/login et /auth/logout ( #73 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-20 17:39:59 +02:00
Colin Maudry
4d9a300e0c
src/auth/routes.py : route /auth/verify-email ( #73 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-20 17:38:13 +02:00
Colin Maudry
e275f10dbd
src/auth/routes.py : route /auth/signup ( #73 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-20 17:37:15 +02:00
Colin Maudry
1c0fb0a960
src/auth/routes.py : blueprint auth et fixtures de test ( #73 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-20 17:35:06 +02:00
Colin Maudry
a02a9df081
src/auth/setup.py : init_auth et helper safe_next ( #73 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-20 17:32:32 +02:00
Colin Maudry
7976257029
src/auth/mailer.py : envoi d'emails HTML+texte ( #73 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-20 17:31:00 +02:00
Colin Maudry
72fd495c5b
src/auth/models.py : classe User Flask-Login ( #73 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-20 17:25:56 +02:00
Colin Maudry
92fe76d072
src/auth/tokens.py : génération et validation des tokens ( #73 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-20 17:24:49 +02:00
Colin Maudry
1a07e5ac0f
src/auth/db.py : CRUD tokens de vérification et reset ( #73 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-20 17:23:02 +02:00
Colin Maudry
ae4a206de7
src/auth/db.py : CRUD users ( #73 )
2026-04-20 17:19:52 +02:00
Colin Maudry
5c6e75e3d3
src/auth/db.py : schéma SQLite et connexion ( #73 )
2026-04-20 17:15:26 +02:00