File size: 2,841 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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import streamlit as st
import sys
import os
from datetime import datetime
import pytz
import logging  # Ajout de l'import logging
from utils.admin import supabase

# Configuration du logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')

# IMPORTANT : set_page_config doit être la première commande Streamlit
st.set_page_config(
    page_title="Vérification de l'email",
    page_icon="✉️",
    layout="centered"
)

# Cacher les éléments de navigation
hide_streamlit_style = """
<style>
    #MainMenu {visibility: hidden;}
    header {visibility: hidden;}
    .css-1544g2n {display: none;}
    section[data-testid="stSidebar"] {display: none;}
</style>
"""
st.markdown(hide_streamlit_style, unsafe_allow_html=True)

def verify_email_token(token: str) -> tuple[bool, str]:
    """Vérifie le token et active le compte"""
    try:
        # Vérifier le token
        verification = supabase.table("email_verification").select("*").eq(
            "verification_token", token
        ).eq("is_verified", False).execute()
        
        if not verification.data:
            return False, "Token de vérification invalide ou déjà utilisé."
            
        verification_data = verification.data[0]
        expires_at = datetime.fromisoformat(verification_data['expires_at'].replace('Z', '+00:00'))
        
        if expires_at < datetime.now(pytz.UTC):
            return False, "Le lien de vérification a expiré."
            
        # Activer l'utilisateur
        supabase.table("users").update({
            "is_active": True
        }).eq("id", verification_data['user_id']).execute()
        
        # Marquer comme vérifié
        supabase.table("email_verification").update({
            "is_verified": True
        }).eq("id", verification_data['id']).execute()
        
        return True, "Email vérifié avec succès!"
        
    except Exception as e:
        logging.error(f"Erreur lors de la vérification : {str(e)}")
        return False, f"Erreur lors de la vérification : {str(e)}"

# Titre de la page
st.title("✉️ Vérification de l'email")

# Debug: Afficher le token reçu dans les logs
token = st.query_params.get("token", None)
logging.info(f"Token reçu : {token if token else 'Aucun token'}")

if not token:
    st.error("Token de vérification manquant.")
    st.stop()

# Vérifier le token et activer le compte
success, message = verify_email_token(token)
if success:
    st.success(message)
    st.info("Votre compte est maintenant actif. Vous pouvez vous connecter.")
    
    # Bouton pour aller à la page de connexion
    if st.button("Aller à la page de connexion"):
        st.switch_page("app.py")
else:
    st.error(message)
    if "expiré" in message:
        st.info("Veuillez demander un nouveau lien de vérification.")