Spaces:
Sleeping
Sleeping
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") | |
""" | |