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