File size: 1,054 Bytes
408128e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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, status
from ..models.users import User, UserSchema
from ..configs.database_config import db
from ..interfaces.auth_interface import Credential
from ..providers import jwt as jwt_provider
from ..middlewares.auth_middleware import get_current_user
import jwt


collection_name = db["user"]


def login_control(token):
    if not token:
        raise HTTPException(
            status_code=status.HTTP_401_UNAUTHORIZED,
            detail="Authorization Token is required",
        )
    decoded_token = jwt.decode(token, options={"verify_signature": False})
    user = {
        "name": decoded_token["name"],
        "email": decoded_token["email"],
        "picture": decoded_token["picture"],
    }
    user = User(**user)

    existing_user = UserSchema.find_by_email(user.email)
    if not existing_user:
        user_id = UserSchema(**user.dict()).create()
    else:
        user_id = existing_user["_id"]

    token = jwt_provider.encrypt({"id": str(user_id)})

    return token