107 lines
3.8 KiB
Python
107 lines
3.8 KiB
Python
|
|
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)
|