from flask import current_app, redirect, render_template, request, session, url_for import auth from core.flask_app import app @app.route("/forgot-password", methods=["GET", "POST"]) def forgot_password(): if session.get("user_id"): return redirect(url_for("index")) sent = False if request.method == "POST": email = request.form.get("email", "").strip().lower() user = auth.get_user_by_email(email) if user: token = auth.create_password_reset_token(user["id"]) reset_url = url_for("reset_password", token=token, _external=True) try: auth.send_password_reset_email(user["email"], reset_url) except auth.EmailNotConfiguredError: # Jamais révélé à l'utilisateur (voir le message générique # ci-dessous) : seul l'admin qui lit les logs serveur doit # savoir que le SMTP n'est pas encore configuré. current_app.logger.exception("Email de réinitialisation non envoyé : SMTP non configuré.") # Même message que le compte existe ou non, pour ne jamais # permettre de deviner quelles adresses sont déjà inscrites. sent = True return render_template("auth/forgot_password.html", sent=sent)