File size: 2,309 Bytes
fe4792e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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)