Spaces:
Runtime error
Runtime error
| 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( | |
| """ | |
| <style> | |
| @keyframes fadeIn { | |
| 0% { opacity: 0; } | |
| 100% { opacity: 1; } | |
| } | |
| .stImage { | |
| animation: fadeIn 1s ease-in; | |
| } | |
| .stTextInput > div > div > input { | |
| font-size: 16px; | |
| border-radius: 8px; | |
| border: 1px solid #6A5ACD; | |
| } | |
| .stButton > button { | |
| background-color: #6A5ACD; | |
| color: white; | |
| font-size: 18px; | |
| padding: 10px; | |
| border-radius: 8px; | |
| border: none; | |
| cursor: pointer; | |
| transition: 0.3s; | |
| } | |
| .stAlert { | |
| text-align: center; | |
| font-weight: bold; | |
| } | |
| </style> | |
| """, | |
| 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") | |
| """ | |