from flask import redirect, render_template, request, url_for from werkzeug.wrappers import Response import auth from core.flask_app import app @app.route("/reset-password/", methods=["GET", "POST"]) def reset_password(token: str) -> str | Response: user_id = auth.get_user_id_for_valid_token(token) if not user_id: return render_template("auth/reset_password.html", invalid=True) error = None if request.method == "POST": password = request.form.get("password", "") password_confirm = request.form.get("password_confirm", "") if password != password_confirm: error = "Les mots de passe ne correspondent pas." elif not auth.password_strength(password)["valid"]: error = "Mot de passe trop faible — respecte les critères affichés." else: auth.set_password(user_id, password) auth.consume_password_reset_token(token) return redirect(url_for("login")) return render_template( "auth/reset_password.html", invalid=False, error=error, min_score_required=auth.MIN_SCORE_REQUIRED, )