diff --git a/app/routes.py b/app/routes.py index 4139ac6..fb4fd6e 100644 --- a/app/routes.py +++ b/app/routes.py @@ -1,12 +1,12 @@ from flask import Blueprint, render_template, request, redirect, url_for, session, flash -from werkzeug.security import check_password_hash +from werkzeug.security import check_password_hash, generate_password_hash from sqlalchemy import text from app import db from datetime import datetime main = Blueprint('main', __name__) -/* routes */ + @main.route('/', methods=['GET', 'POST']) def index(): if 'user_id' in session: @@ -50,8 +50,90 @@ def logout(): session.clear() return redirect(url_for('main.index')) -@main.route('/gestion-utilisateurs') +@main.route('/gestion-utilisateurs', methods=['GET', 'POST']) def gestion_utilisateurs(): if 'user_id' not in session: return redirect(url_for('main.index')) - return render_template('gestion_utilisateurs.html') \ No newline at end of file + + if request.method == 'POST': + action = request.form.get('action') + user_id = request.form.get('id') + user_actif = request.form.get('actif', '1') + user_prenom = request.form.get('prenom') + user_nom = request.form.get('nom') + user_login = request.form.get('login') + user_mail = request.form.get('mail') + user_pass = request.form.get('pass') + + if action == 'creer': + if user_pass: + hashed_pass = generate_password_hash(user_pass) + query = text(""" + INSERT INTO login (login, nom, prenom, mail, pass, actif) + VALUES (:login, :nom, :prenom, :mail, :pass, :actif) + """) + db.session.execute(query, { + "login": user_login, + "nom": user_nom, + "prenom": user_prenom, + "mail": user_mail, + "pass": hashed_pass, + "actif": user_actif + }) + db.session.commit() + flash("Utilisateur créé avec succès.", "success") + else: + flash("Le mot de passe est obligatoire pour créer un utilisateur.", "danger") + + elif action == 'modifier' and user_id: + if user_pass: + hashed_pass = generate_password_hash(user_pass) + query = text(""" + UPDATE login + SET login = :login, nom = :nom, prenom = :prenom, mail = :mail, pass = :pass, actif = :actif + WHERE id = :id + """) + db.session.execute(query, { + "id": user_id, + "login": user_login, + "nom": user_nom, + "prenom": user_prenom, + "mail": user_mail, + "pass": hashed_pass, + "actif": user_actif + }) + else: + query = text(""" + UPDATE login + SET login = :login, nom = :nom, prenom = :prenom, mail = :mail, actif = :actif + WHERE id = :id + """) + db.session.execute(query, { + "id": user_id, + "login": user_login, + "nom": user_nom, + "prenom": user_prenom, + "mail": user_mail, + "actif": user_actif + }) + db.session.commit() + flash("Utilisateur modifié avec succès.", "success") + + return redirect(url_for('main.gestion_utilisateurs')) + + # Lecture exacte de la table login de votre base de données + users_query = text("SELECT id, login, nom, prenom, mail, actif FROM login ORDER BY id ASC") + result = db.session.execute(users_query) + + users = [] + for row in result: + users.append({ + 'id': row.id, + 'login': row.login if row.login else '', + 'nom': row.nom if row.nom else '', + 'prenom': row.prenom if row.prenom else '', + 'mail': row.mail if row.mail else '', + 'actif': row.actif if row.actif is not None else 1 + }) + + return render_template('gestion_utilisateurs.html', users=users) \ No newline at end of file diff --git a/app/templates/gestion_utilisateurs.html b/app/templates/gestion_utilisateurs.html index 66e2180..6592ffb 100644 --- a/app/templates/gestion_utilisateurs.html +++ b/app/templates/gestion_utilisateurs.html @@ -4,7 +4,7 @@ content %}
- Module de gestion des utilisateurs en cours de chargement... -
+ +