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