Spaces:
Sleeping
Sleeping
import streamlit as st | |
import sys | |
import os | |
import time | |
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | |
from utils.password_reset import verify_reset_token, reset_password | |
# Configuration de la page pour cacher complètement la sidebar | |
st.set_page_config( | |
page_title="Réinitialisation du mot de passe", | |
page_icon="🔒", | |
layout="centered", | |
initial_sidebar_state="collapsed" | |
) | |
# Cacher tous les éléments de la sidebar et le menu hamburger | |
hide_streamlit_style = """ | |
<style> | |
#MainMenu {visibility: hidden;} | |
header {visibility: hidden;} | |
.css-1544g2n {display: none;} | |
.css-14xtw13 e8zbici0 {display: none;} | |
section[data-testid="stSidebar"] {display: none;} | |
</style> | |
""" | |
st.markdown(hide_streamlit_style, unsafe_allow_html=True) | |
# Titre de la page | |
st.title("Réinitialisation du mot de passe") | |
# Récupérer le token depuis l'URL | |
token = st.query_params.get("token", None) | |
if not token: | |
st.error("Token de réinitialisation manquant.") | |
st.stop() | |
# Vérifier la validité du token | |
valid, user_id = verify_reset_token(token) | |
if not valid: | |
st.error("Le lien de réinitialisation est invalide ou a expiré.") | |
time.sleep(3) # Attendre 3 secondes | |
st.switch_page("app.py") # Rediriger vers la page de connexion | |
st.stop() | |
# Formulaire de nouveau mot de passe | |
with st.form("reset_password_form"): | |
new_password = st.text_input("Nouveau mot de passe", type="password") | |
confirm_password = st.text_input("Confirmez le mot de passe", type="password") | |
submitted = st.form_submit_button("Réinitialiser le mot de passe") | |
if submitted: | |
if new_password != confirm_password: | |
st.error("Les mots de passe ne correspondent pas.") | |
elif len(new_password) < 8: | |
st.error("Le mot de passe doit contenir au moins 8 caractères.") | |
else: | |
success, message = reset_password(token, new_password) | |
if success: | |
st.success("Votre mot de passe a été mis à jour avec succès.") | |
st.info("Redirection vers la page de connexion...") | |
time.sleep(3) # Attendre 3 secondes | |
st.switch_page("app.py") # Rediriger vers la page de connexion | |
else: | |
st.error(message) |