diff --git a/endpoints/people.get.py b/endpoints/people.get.py index e69de29..07744cf 100644 --- a/endpoints/people.get.py +++ b/endpoints/people.get.py @@ -0,0 +1,40 @@ +from fastapi import APIRouter, Depends, HTTPException, status +from fastapi.security import OAuth2AuthorizationCodeBearer +from sqlalchemy.orm import Session +from typing import Optional +from core.database import get_db +from models.user import User +from schemas.user import UserSchema, UserCreate +from helpers.auth_helpers import verify_google_token, get_user_by_email, create_user_from_google +from helpers.token_helpers import create_access_token + +router = APIRouter() + +oauth2_scheme = OAuth2AuthorizationCodeBearer( + authorizationUrl="https://accounts.google.com/o/oauth2/v2/auth", + tokenUrl="https://oauth2.googleapis.com/token" +) + +@router.get("/login/google", response_model=UserSchema) +async def google_login( + token: str, + db: Session = Depends(get_db) +): + google_user = verify_google_token(token) + if not google_user: + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="Invalid Google token" + ) + + user = get_user_by_email(db, google_user.email) + if not user: + user = create_user_from_google(db, google_user) + + access_token = create_access_token(data={"sub": user.email}) + + return { + "user": user, + "access_token": access_token, + "token_type": "bearer" + } \ No newline at end of file