Colin Maudry
8cd5bfe821
fix(csrf): supprimer prevent_initial_call=True sur _fill_csrf_inputs
...
Avec prevent_initial_call=True, le callback ne s'exécutait pas lors de
la chaîne initiale (_generate_csrf_token → csrf-token), laissant le champ
csrf_token vide au premier chargement direct de /connexion → erreur 400.
Ajoute des tests comportementaux avec CSRF activé (comme en production) et
un test architectural qui vérifie que le callback reste appelable initialement.
Corrige aussi les assertions de redirection post-login (/compte/abonnement).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-29 15:46:30 +02:00
Colin Maudry
aac3753226
feat(auth): bouton Connexion avec LinkedIn sur connexion/inscription ( #88 )
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-24 23:18:41 +02:00
Colin Maudry
9f10f1c4de
feat(auth): routes /auth/linkedin et callback OIDC ( #88 )
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-24 23:14:29 +02:00
Colin Maudry
d79e990c04
feat(auth): init Authlib + provider LinkedIn (config env) ( #88 )
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-24 23:11:26 +02:00
Colin Maudry
d72cad90ec
feat(auth): resolve_oauth_user (liaison/création de compte OIDC) ( #88 )
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-24 23:07:46 +02:00
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
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
c0927c718d
test(brevo): test d'intégration sandbox optionnel ( #87 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-24 15:35:23 +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
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
5151b32f3e
tests/auth/test_csrf.py : vérifie que CSRF est actif ( #73 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-20 22:56:58 +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
8896726e09
src/app.py : initialisation de l'authentification au démarrage ( #73 )
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-20 17:34:12 +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