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