File size: 955 Bytes
1bc36c9
 
 
 
fcfe4b3
 
 
 
1bc36c9
 
 
 
14bfd4c
1bc36c9
 
 
 
 
 
fcfe4b3
14bfd4c
 
 
fcfe4b3
 
 
 
 
 
 
 
 
 
 
1bc36c9
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
from fastapi import HTTPException
from datetime import datetime, timedelta

from src.utils import JWTUtil, BcryptUtil
from src.schemas import (
    UserSignInSchema,
    SessionCreateSchema,
)

from ._user_service import UserService
from ._session_service import SessionService


class AuthService:
    def __init__(self):
        self._jwt_util = JWTUtil()
        self._user_service = UserService()
        self._session_service = SessionService()

    async def sign_in(self, user: UserSignInSchema):
        existing_user = await self._user_service.list_users(
            filter_by={"email": user.email}
        )
        if not existing_user:
            user_object = await self._user_service.create_user(
                UserSignInSchema(name=user.name, email=user.email)
            )
            return {
                "user_id": str(user_object.id),
            }

        return {
            "user_id": str(existing_user[0].id),
        }