from flask import Blueprint, flash, redirect, render_template, request, url_for from sqlalchemy import text from werkzeug.security import generate_password_hash from app import db from app.decorators import login_required utilisateurs_bp = Blueprint("utilisateurs", __name__) @utilisateurs_bp.route("/gestion-utilisateurs", methods=["GET", "POST"]) @login_required def gestion_utilisateurs(): 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("utilisateurs.gestion_utilisateurs")) users_query = text( "SELECT id, login, nom, prenom, mail, actif FROM login ORDER BY id ASC" ) result = db.session.execute(users_query) users = [ { "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, } for row in result ] return render_template("gestion_utilisateurs.html", users=users)