Update appp.py
Browse files
appp.py
CHANGED
@@ -60,29 +60,6 @@ app.mount("/static", StaticFiles(directory="static"), name="static")
|
|
60 |
templates = Jinja2Templates(directory="templates")
|
61 |
|
62 |
# OAuth routes
|
63 |
-
@app.get("/login/oauth")
|
64 |
-
async def login_oauth(request: Request):
|
65 |
-
redirect_uri = request.url_for('auth_callback')
|
66 |
-
return await oauth.google.authorize_redirect(request, redirect_uri)
|
67 |
-
|
68 |
-
@app.get("/auth/callback")
|
69 |
-
async def auth_callback(request: Request, db: Session = Depends(get_db)):
|
70 |
-
token = await oauth.google.authorize_access_token(request)
|
71 |
-
user_info = await oauth.google.parse_id_token(request, token)
|
72 |
-
request.session["user_info"] = user_info
|
73 |
-
|
74 |
-
db_user = db.query(User).filter(User.email == user_info['email']).first()
|
75 |
-
if not db_user:
|
76 |
-
db_user = User(email=user_info['email'], username=user_info['name'], is_verified=True)
|
77 |
-
db.add(db_user)
|
78 |
-
db.commit()
|
79 |
-
db.refresh(db_user)
|
80 |
-
|
81 |
-
access_token = create_access_token(data={"sub": db_user.email}, expires_delta=timedelta(minutes=30))
|
82 |
-
response = RedirectResponse(url="/protected")
|
83 |
-
response.set_cookie(key="access_token", value=f"Bearer {access_token}", httponly=True)
|
84 |
-
return response
|
85 |
-
|
86 |
@app.post("/login")
|
87 |
async def login(
|
88 |
request: Request,
|
@@ -111,8 +88,8 @@ async def login_get(request: Request):
|
|
111 |
google_oauth_url = request.url_for("login_oauth")
|
112 |
return templates.TemplateResponse("login.html", {"request": request, "google_oauth_url": google_oauth_url})
|
113 |
|
114 |
-
@app.get("/
|
115 |
-
async def
|
116 |
redirect_uri = request.url_for('auth_callback')
|
117 |
return await oauth.google.authorize_redirect(request, redirect_uri)
|
118 |
|
@@ -139,10 +116,14 @@ async def auth_callback(request: Request, db: Session = Depends(get_db)):
|
|
139 |
response.set_cookie(key="access_token", value=f"Bearer {access_token}", httponly=True, secure=True, samesite='Lax')
|
140 |
return response
|
141 |
except Exception as e:
|
142 |
-
# Handle any exceptions that may occur during the OAuth process
|
143 |
print(f"OAuth exception: {e}")
|
144 |
raise HTTPException(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail="An error occurred during OAuth authentication")
|
145 |
|
|
|
|
|
|
|
|
|
|
|
146 |
@app.get("/registration_successful", response_class=HTMLResponse)
|
147 |
async def registration_successful(request: Request):
|
148 |
return templates.TemplateResponse("registration_successful.html", {"request": request})
|
|
|
60 |
templates = Jinja2Templates(directory="templates")
|
61 |
|
62 |
# OAuth routes
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
@app.post("/login")
|
64 |
async def login(
|
65 |
request: Request,
|
|
|
88 |
google_oauth_url = request.url_for("login_oauth")
|
89 |
return templates.TemplateResponse("login.html", {"request": request, "google_oauth_url": google_oauth_url})
|
90 |
|
91 |
+
@app.get("/login/oauth")
|
92 |
+
async def login_oauth(request: Request):
|
93 |
redirect_uri = request.url_for('auth_callback')
|
94 |
return await oauth.google.authorize_redirect(request, redirect_uri)
|
95 |
|
|
|
116 |
response.set_cookie(key="access_token", value=f"Bearer {access_token}", httponly=True, secure=True, samesite='Lax')
|
117 |
return response
|
118 |
except Exception as e:
|
|
|
119 |
print(f"OAuth exception: {e}")
|
120 |
raise HTTPException(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail="An error occurred during OAuth authentication")
|
121 |
|
122 |
+
@app.get("/register/google")
|
123 |
+
async def register_google(request: Request):
|
124 |
+
redirect_uri = request.url_for('auth_callback')
|
125 |
+
return await oauth.google.authorize_redirect(request, redirect_uri)
|
126 |
+
|
127 |
@app.get("/registration_successful", response_class=HTMLResponse)
|
128 |
async def registration_successful(request: Request):
|
129 |
return templates.TemplateResponse("registration_successful.html", {"request": request})
|