import streamlit as st from werkzeug.security import check_password_hash import os from dotenv import load_dotenv def sign_in(navigate_to): st.markdown( """ """, unsafe_allow_html=True, ) logo_path = "assets/logo.png" # centrer le logo col1, col2, col3 = st.columns([1.5, 1.5, 1]) with col2: if os.path.exists(logo_path): st.image(logo_path, width=150) # Récupération du gestionnaire de base de données (déjà stocké en session) db_manager = st.session_state.get("db_manager") st.title("Connexion") # Champs de connexion login = st.text_input("👤 Pseudo") password = st.text_input("🔒 Mot de passe", type="password") # Bouton de connexion if st.button("Se connecter"): # Vérification des identifiants en base de données user = db_manager.fetch_by_condition("utilisateurs", "login = ?", (login,)) if user: print("user", user[0]["id_utilisateur"]) user = user[0] user_id = user["id_utilisateur"] # Récupération de l'ID utilisateur hashed_password = user["mot_de_passe"] # Récupération du mot de passe hashé # Vérification du mot de passe if check_password_hash(hashed_password, password): # Stocker les infos utilisateur dans la session st.session_state["logged_in"] = True st.session_state["user"] = login st.session_state["user_id"] = user_id # Message de confirmation st.success("✅ Connexion réussie !") navigate_to("accueil") # Redirige vers la page d'accueil else: st.error("❌ Mot de passe incorrect.") else: st.error("❌ Utilisateur non trouvé.") # Lien vers l'inscription if st.button("Pas de compte ? Inscrivez-vous."): navigate_to("inscription") # Redirection vers l'inscription """ # Forcer la connexion pendant le développement (commenter cette partie si nécessaire) if 'logged_in' not in st.session_state or not st.session_state['logged_in']: # Simuler une connexion (utiliser des valeurs par défaut) st.session_state["logged_in"] = True st.session_state["user"] = "dev_user" st.session_state["user_id"] = 1 # ID fictif pour le développement st.success("✅ Connexion simulée pour le développement !") navigate_to("accueil") # Redirige vers la page d'accueil else: # Logique de connexion normale (en production) login = st.text_input("👤 Pseudo") password = st.text_input("🔒 Mot de passe", type="password") if st.button("Se connecter"): user = db_manager.fetch_by_condition("utilisateurs", "login = %s", (login,)) if user: user_id = user[0][0] hashed_password = user[0][2] if check_password_hash(hashed_password, password): st.session_state["logged_in"] = True st.session_state["user"] = login st.session_state["user_id"] = user_id st.success("✅ Connexion réussie !") navigate_to("accueil") else: st.error("❌ Mot de passe incorrect.") else: st.error("❌ Utilisateur non trouvé.") if st.button("Pas de compte ? Inscrivez-vous."): navigate_to("inscription") """