ERNESTMIND2.5 / auth_backend.py
ernestmindres's picture
Upload 6 files
f490d20 verified
# auth_backend.py
import json
import uuid
from datetime import datetime
from werkzeug.security import generate_password_hash, check_password_hash
from git_storage import (
load_users_data,
save_users_data,
create_user_data_structure,
)
# Fonction pour valider l'email
def is_valid_email(email):
# Une validation simple
return "@" in email and "." in email
# Fonction d'inscription de l'utilisateur
def register_user(email, password):
# 1. Validation de base
if not is_valid_email(email) or len(password) < 8:
return None, "Email invalide ou mot de passe trop court (min 8 caractères)."
users = load_users_data()
# 2. Vérification de l'existence
if any(u.get("email") == email for u in users.values()):
return None, "Cet email est déjà enregistré."
# 3. Création du nouvel utilisateur
user_id = str(uuid.uuid4())
hashed_password = generate_password_hash(password)
new_user = {
"email": email,
"password_hash": hashed_password,
"user_id": user_id,
"created_at": datetime.now().isoformat()
}
users[user_id] = new_user
# 4. Sauvegarde et commit de users.json
success_save = save_users_data(users, commit_message=f"feat: New user registration for {email}")
if not success_save:
return None, "Erreur lors de la sauvegarde des données utilisateur (Hugging Face)."
# 5. Création de la structure de données et de la première conversation (si nécessaire)
# L'implémentation actuelle de create_user_data_structure crée un fichier vide.
# Vous pouvez ajouter ici la logique pour une première conversation si vous le souhaitez.
create_user_data_structure(user_id)
# Retourne l'ID et un message de succès
return user_id, "Inscription réussie."
# Fonction de connexion de l'utilisateur
def login_user(email, password):
users = load_users_data()
# 1. Recherche de l'utilisateur par email
user = next((u for u in users.values() if u.get("email") == email), None)
if user is None:
return None, "Email ou mot de passe incorrect."
# 2. Vérification du mot de passe
if not check_password_hash(user["password_hash"], password):
return None, "Email ou mot de passe incorrect."
# 3. Connexion réussie
return user["user_id"], "Connexion réussie."
# Fonction pour obtenir les données utilisateur par ID
def get_user_by_id(user_id):
users = load_users_data()
return users.get(user_id)