colibri.assistant.ai / pages /Verify_email.py
Gouzi Mohaled
Ajoute des fichiers et sous-dossiers supplémentaires
fe4792e
raw
history blame
2.84 kB
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.")