import sys from schemas import LoginSchema from repositories import UserRepository from models import ApiResponse from google.oauth2 import id_token from google.auth.transport import requests from configs import Config class AuthService: def __init__(self, userRepository: UserRepository): self.user_repository = userRepository def verify_google_id_token(self, id_token_str): try: payload = id_token.verify_oauth2_token( id_token_str, requests.Request(), Config.GOOGLE_CLIENT_ID ) print(f"output verify {payload}", file=sys.stderr) user_data = { "_id": payload.get("sub"), "email": payload.get("email"), "name": payload.get("name"), "picture": payload.get("picture"), "given_name": payload.get("given_name"), "family_name": payload.get("family_name"), "locale": payload.get("locale"), "email_verified": payload.get("email_verified", False), "iat": payload.get("iat"), "exp": payload.get("exp"), } return payload except Exception as e: print(f"issue on the verify {e}", file=sys.stderr) return None def login(self, data: LoginSchema): try: user_data = self.user_repository.get_user_by_email(data.email) if user_data == None: return ApiResponse(success=False, message="User not found", data=None) if user_data["password"] == data.password: del user_data["password"] return ApiResponse( success=True, message="Login success", data=user_data ) return ApiResponse(success=False, message="Invalid password", data=None) except Exception as e: print(f"the issue is {e}") return ApiResponse( success=False, message="Internal server error", data=None )