from flask import Blueprint, render_template, request, redirect, url_for, session, flash from werkzeug.security import check_password_hash from sqlalchemy import text from app import db from datetime import datetime main = Blueprint('main', __name__) @main.route('/', methods=['GET', 'POST']) def index(): if 'user_id' in session: return redirect(url_for('main.menu')) if 'login_attempts' not in session: session['login_attempts'] = 0 if request.method == 'POST': user_login = request.form.get('login') user_pass = request.form.get('pass') query = text("SELECT id, pass AS user_pass, nom, prenom FROM login WHERE login = :login AND actif = 1") result = db.session.execute(query, {"login": user_login}).fetchone() if result and check_password_hash(result.user_pass, user_pass): session.pop('login_attempts', None) session['user_id'] = result.id session['user_name'] = f"{result.prenom} {result.nom}" return redirect(url_for('main.menu')) else: session['login_attempts'] += 1 if session['login_attempts'] >= 3: session.pop('login_attempts', None) return redirect('https://giraud-finance.com') essais_restants = 3 - session['login_attempts'] flash(f"Identifiant ou mot de passe incorrect. Il vous reste {essais_restants} essai(s).", "danger") return render_template('index.html') @main.route('/menu') def menu(): if 'user_id' not in session: return redirect(url_for('main.index')) return render_template('menu.html') @main.route('/logout') def logout(): session.clear() return redirect(url_for('main.index')) @main.route('/gestion-utilisateurs') def gestion_utilisateurs(): if 'user_id' not in session: return redirect(url_for('main.index')) return render_template('gestion_utilisateurs.html')