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
|