Spaces:
Sleeping
Sleeping
File size: 4,437 Bytes
7bd7bef 5b2d4e7 7bd7bef 5b2d4e7 7bd7bef 5b2d4e7 7bd7bef 5b2d4e7 7bd7bef b2e49a0 7bd7bef 5b2d4e7 7bd7bef 5b2d4e7 7bd7bef 5b2d4e7 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
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")
"""
|