Gregniuki commited on
Commit
fecefe5
·
1 Parent(s): 5ba37dd

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +11 -21
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
- try:
143
- payload = jwt.decode(token, auth_views.SECRET_KEY, algorithms=[auth_views.ALGORITHM])
144
- user_email = payload.get("sub")
145
- if user_email is None:
146
- raise HTTPException(status_code=401, detail="Not authenticated")
147
- except jwt.PyJWTError:
148
- raise HTTPException(status_code=401, detail="Not authenticated")
149
-
150
- db_user = get_user_by_email(db, user_email)
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)