Spaces:
Sleeping
Sleeping
File size: 1,201 Bytes
b4c9cb7 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
from fastapi import HTTPException, status
from src.apis.models.user_models import User
from src.config.mongo import UserCRUD
from src.apis.providers.jwt_provider import JWTProvider
from src.utils.logger import logger
import jwt
jwt_provider = JWTProvider()
async def login_control(username: str, password: str):
user = User(username=username, password=password)
existing_user = await UserCRUD.read_one({"username": user.username})
if not existing_user:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Invalid username or password",
)
if existing_user and existing_user["password"] != user.password:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Invalid username or password",
)
token = jwt_provider.encrypt({"id": str(existing_user["_id"])})
user_data = user.__dict__
user_data["id"] = existing_user["_id"]
user_data["username"] = existing_user["username"]
user_data.pop("password", None)
user_data.pop("created_at", None)
user_data.pop("updated_at", None)
user_data.pop("expire_at", None)
return token, user_data
|