Update main.py
Browse files
main.py
CHANGED
@@ -1,11 +1,11 @@
|
|
1 |
#main.py
|
2 |
|
3 |
-
from fastapi import FastAPI, Form, Depends, HTTPException, status
|
4 |
from fastapi.requests import Request
|
5 |
from fastapi.responses import HTMLResponse, RedirectResponse, JSONResponse
|
6 |
from fastapi.templating import Jinja2Templates
|
7 |
from sqlalchemy.orm import Session
|
8 |
-
from auth import verify_token, oauth2_scheme, auth_views, register, UserCreate, authenticate_user, get_user_by_verification_token
|
9 |
from database import get_db, get_user_by_email
|
10 |
from datetime import timedelta
|
11 |
from typing import Optional
|
@@ -132,23 +132,13 @@ async def verify_email(verification_token: str, db: Session = Depends(get_db)):
|
|
132 |
# Redirect to the protected route with the token as a query parameter (or as required by your front-end/client)
|
133 |
return RedirectResponse(url=f"/protected?token={access_token}")
|
134 |
|
135 |
-
@app.get("/protected", response_class=HTMLResponse)
|
136 |
-
async def protected_route(request: Request, token: Optional[str] = None, db: Session = Depends(get_db)):
|
137 |
-
# Try to get token from query parameter first
|
138 |
-
token = token or request.cookies.get("access_token")
|
139 |
-
if not token:
|
140 |
-
raise HTTPException(status_code=401, detail="Not authenticated")
|
141 |
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
if db_user is None or not db_user.is_verified:
|
152 |
-
raise HTTPException(status_code=401, detail="User not found or not verified in the database")
|
153 |
-
|
154 |
-
return templates.TemplateResponse("protected.html", {"request": request, "user": db_user})
|
|
|
1 |
#main.py
|
2 |
|
3 |
+
from fastapi import FastAPI, Form, Depends, HTTPException, status, Query
|
4 |
from fastapi.requests import Request
|
5 |
from fastapi.responses import HTMLResponse, RedirectResponse, JSONResponse
|
6 |
from fastapi.templating import Jinja2Templates
|
7 |
from sqlalchemy.orm import Session
|
8 |
+
from auth import verify_token, oauth2_scheme, auth_views, register, UserCreate, authenticate_user, get_user_by_verification_token, protected_route
|
9 |
from database import get_db, get_user_by_email
|
10 |
from datetime import timedelta
|
11 |
from typing import Optional
|
|
|
132 |
# Redirect to the protected route with the token as a query parameter (or as required by your front-end/client)
|
133 |
return RedirectResponse(url=f"/protected?token={access_token}")
|
134 |
|
|
|
|
|
|
|
|
|
|
|
|
|
135 |
|
136 |
+
|
137 |
+
@app.get("/protected", response_class=HTMLResponse)
|
138 |
+
async def get_protected(
|
139 |
+
request: Request,
|
140 |
+
token: str = Query(None), # Accept token from query parameters
|
141 |
+
db: Session = Depends(get_db)
|
142 |
+
):
|
143 |
+
# Now pass both the request and token to the protected_route function
|
144 |
+
return await protected_route(request, token, db)
|
|
|
|
|
|
|
|