Gregniuki commited on
Commit
bf46f0e
·
1 Parent(s): 175e58b

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +34 -0
main.py CHANGED
@@ -123,6 +123,40 @@ def create_assessment(
123
  print(f"Assessment name: {assessment_name}")
124
  return response
125
  """
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
126
  # Dependency for verifying the user's token
127
  def get_current_user(token: str = Depends(verify_token)):
128
  if not token:
 
123
  print(f"Assessment name: {assessment_name}")
124
  return response
125
  """
126
+
127
+ @app.post("/verify-google-token")
128
+ async def verify_google_token(token_data: TokenData, db: Session = Depends(get_db)):
129
+ # Verify the token with Google
130
+ response = requests.get(f'https://www.googleapis.com/oauth2/v3/tokeninfo?id_token={token_data.token}')
131
+ if response.status_code != 200:
132
+ raise HTTPException(status_code=400, detail="Invalid Google token")
133
+
134
+ google_user_info = response.json()
135
+ email = google_user_info.get('email')
136
+
137
+ # Check if user exists in database and verify them
138
+ db_user = db.query(User).filter(User.email == email).first()
139
+ if not db_user:
140
+ # Create a new user if doesn't exist
141
+ db_user = User(email=email, is_verified=True, name=google_user_info.get('name'))
142
+ db.add(db_user)
143
+ db.commit()
144
+ db.refresh(db_user)
145
+ elif not db_user.is_verified:
146
+ # Verify the user if not already verified
147
+ db_user.is_verified = True
148
+ db.commit()
149
+
150
+ # Create an access token for the user
151
+ access_token = auth_views.create_access_token(
152
+ data={"sub": db_user.email},
153
+ expires_delta=timedelta(minutes=auth_views.ACCESS_TOKEN_EXPIRE_MINUTES)
154
+ )
155
+
156
+ # Redirect the user to the protected route
157
+ response = RedirectResponse(url="/protected")
158
+ response.set_cookie(key="access_token", value=f"Bearer {access_token}", httponly=True)
159
+ return response
160
  # Dependency for verifying the user's token
161
  def get_current_user(token: str = Depends(verify_token)):
162
  if not token: