feat(auth): auto-login à la validation d'email, redirection vers mes-infos

Quand l'utilisateur valide son email, il est maintenant connecté automatiquement
via login_user() et redirigé directement vers /compte/abonnement/mes-infos
au lieu de /connexion?verified=1.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Colin Maudry
2026-07-04 23:16:29 +02:00
parent cc2b34e84a
commit 6464baebd2
2 changed files with 8 additions and 3 deletions
+2 -1
View File
@@ -98,7 +98,8 @@ def verify_email():
if user_id is None: if user_id is None:
return redirect("/verification-email?error=invalid_token") return redirect("/verification-email?error=invalid_token")
db.set_email_verified(user_id) db.set_email_verified(user_id)
return redirect("/connexion?verified=1") login_user(User(db.get_user_by_id(user_id)), remember=True)
return redirect("/compte/abonnement/mes-infos")
@auth_bp.route("/login", methods=["POST"]) @auth_bp.route("/login", methods=["POST"])
+6 -2
View File
@@ -1,15 +1,19 @@
from src.auth import db, tokens from src.auth import db, tokens
def test_verify_email_valid_token_marks_user_verified(client, users_db_path): def test_verify_email_valid_token_logs_in_and_redirects_to_mes_infos(
client, users_db_path
):
db.init_schema() db.init_schema()
uid = db.create_user("a@b.c", "hash") uid = db.create_user("a@b.c", "hash")
token = tokens.create_verification_token(uid) token = tokens.create_verification_token(uid)
resp = client.get(f"/auth/verify-email?token={token}") resp = client.get(f"/auth/verify-email?token={token}")
assert resp.status_code == 302 assert resp.status_code == 302
assert "/connexion?verified=1" in resp.headers["Location"] assert "/compte/abonnement/mes-infos" in resp.headers["Location"]
assert db.get_user_by_id(uid)["email_verified"] == 1 assert db.get_user_by_id(uid)["email_verified"] == 1
with client.session_transaction() as sess:
assert sess.get("_user_id") == str(uid)
def test_verify_email_invalid_token(client): def test_verify_email_invalid_token(client):