Spaces:
Sleeping
Sleeping
Update user_routes.py
Browse files- user_routes.py +43 -2
user_routes.py
CHANGED
|
@@ -6,6 +6,7 @@ from auth_backend import (
|
|
| 6 |
login_user,
|
| 7 |
reset_password_via_security_question,
|
| 8 |
get_user_by_id,
|
|
|
|
| 9 |
)
|
| 10 |
from decorators import login_required
|
| 11 |
|
|
@@ -99,10 +100,50 @@ def dashboard():
|
|
| 99 |
|
| 100 |
return render_template("dashboard.html", user=user)
|
| 101 |
|
| 102 |
-
|
|
|
|
| 103 |
@login_required
|
| 104 |
def profile():
|
| 105 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 106 |
return render_template("profile.html", user=user)
|
| 107 |
|
| 108 |
|
|
|
|
| 6 |
login_user,
|
| 7 |
reset_password_via_security_question,
|
| 8 |
get_user_by_id,
|
| 9 |
+
update_user_profile,
|
| 10 |
)
|
| 11 |
from decorators import login_required
|
| 12 |
|
|
|
|
| 100 |
|
| 101 |
return render_template("dashboard.html", user=user)
|
| 102 |
|
| 103 |
+
|
| 104 |
+
@user_bp.route("/profile", methods=['GET', 'POST']) # <--- AJOUTER 'POST'
|
| 105 |
@login_required
|
| 106 |
def profile():
|
| 107 |
+
user_id = session.get('user_id')
|
| 108 |
+
|
| 109 |
+
if request.method == 'POST':
|
| 110 |
+
# 1. Récupération des données du formulaire POST
|
| 111 |
+
username = request.form.get('username')
|
| 112 |
+
email = request.form.get('email')
|
| 113 |
+
new_password = request.form.get('new_password')
|
| 114 |
+
confirm_password = request.form.get('confirm_password')
|
| 115 |
+
|
| 116 |
+
# 2. Validation simple côté serveur
|
| 117 |
+
if not username or not email:
|
| 118 |
+
flash("Le nom d'utilisateur et l'e-mail sont obligatoires.", "error")
|
| 119 |
+
elif new_password and new_password != confirm_password:
|
| 120 |
+
flash("Le nouveau mot de passe et la confirmation ne correspondent pas.", "error")
|
| 121 |
+
else:
|
| 122 |
+
# 3. Appel de la fonction de mise à jour du backend
|
| 123 |
+
# Note : on passe None si le mot de passe n'est pas fourni/n'est pas validé.
|
| 124 |
+
password_to_update = new_password if new_password and new_password == confirm_password else None
|
| 125 |
+
|
| 126 |
+
success, message = update_user_profile(user_id, username, email, password_to_update)
|
| 127 |
+
|
| 128 |
+
if success:
|
| 129 |
+
flash(message, "success")
|
| 130 |
+
# On pourrait aussi rediriger vers la page /profile GET pour rafraîchir la vue
|
| 131 |
+
# et nettoyer l'URL.
|
| 132 |
+
return redirect(url_for('user_bp.profile'))
|
| 133 |
+
else:
|
| 134 |
+
# Échec de la mise à jour (ex: email déjà pris, mot de passe trop court)
|
| 135 |
+
flash(message, "error")
|
| 136 |
+
|
| 137 |
+
# Logique pour la méthode GET ou après un échec POST
|
| 138 |
+
# On récupère toujours l'utilisateur pour l'affichage (s'assure des données les plus fraîches)
|
| 139 |
+
user = get_user_by_id(user_id)
|
| 140 |
+
|
| 141 |
+
if user is None:
|
| 142 |
+
# Erreur critique de session
|
| 143 |
+
flash("Erreur de session. Veuillez vous reconnecter.", "error")
|
| 144 |
+
session.pop('user_id', None)
|
| 145 |
+
return redirect(url_for('user_bp.connexion'))
|
| 146 |
+
|
| 147 |
return render_template("profile.html", user=user)
|
| 148 |
|
| 149 |
|