| 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 | |