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 = """ """ 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.")