from fastapi import FastAPI, HTTPException, Depends from pymongo import MongoClient from pydantic import BaseModel from bson.objectid import ObjectId import hashlib import os app = FastAPI() # Connexion à MongoDB MONGO_URL = "mongodb+srv://lebaykserver:mVef8e5F1GRtbA14@test.6bzxp.mongodb.net/" client = MongoClient(MONGO_URL) db = client["IA_SIGNATURE"] # Remplace "mydatabase" par le nom de ta base users_collection = db["USER"] # Modèle de connexion class LoginModel(BaseModel): name: str etablissement: str hashed_password: str def hash_password(password: str) -> str: return hashlib.sha256(password.encode()).hexdigest() @app.post("/login") def login(user: LoginModel): hashed_password = hash_password(user.hashed_password) found_user = users_collection.find_one({ "name": user.name, "etablissement": user.etablissement, "hashed_password": hashed_password }) if not found_user: raise HTTPException(status_code=401, detail="Identifiants invalides") return {"message": "Connexion réussie", "user_id": str(found_user["_id"]) } @app.post("/register") def register(user: LoginModel): if users_collection.find_one({"name": user.name, "etablissement": user.etablissement}): raise HTTPException(status_code=400, detail="Utilisateur déjà existant") user_data = { "name": user.name, "etablissement": user.etablissement, "hashed_password": hash_password(user.hashed_password) } inserted_id = users_collection.insert_one(user_data).inserted_id return {"message": "Utilisateur enregistré", "user_id": str(inserted_id)}