ernestmindres commited on
Commit
3911f60
·
verified ·
1 Parent(s): 6289533

Update user_routes.py

Browse files
Files changed (1) hide show
  1. 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
- @user_bp.route("/profile")
 
103
  @login_required
104
  def profile():
105
- user = get_user_by_id(session.get('user_id'))
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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