Spaces:
Sleeping
Sleeping
| # 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) |