Gregniuki commited on
Commit
1deefa3
·
1 Parent(s): 8d61206

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +31 -18
main.py CHANGED
@@ -1,6 +1,6 @@
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
@@ -8,7 +8,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
12
  #import auth
13
  #import tts
14
  import os
@@ -138,31 +138,44 @@ async def verify_email(verification_token: str, db: Session = Depends(get_db)):
138
  # Redirect to the protected route with the token as a query parameter (or as required by your front-end/client)
139
  return RedirectResponse(url=f"/protected?token={access_token}")
140
 
141
- from jwt import decode, PyJWTError # make sure jwt is imported
142
-
143
-
144
 
145
  @app.get("/protected", response_class=HTMLResponse)
146
- async def get_protected(request: Request, token: Optional[str] = None, db: Session = Depends(get_db)):
147
- # Try to get the token from the query parameter first, then fall back to the cookie
148
- token = token or request.cookies.get("access_token")
149
- if not token:
150
- raise HTTPException(status_code=401, detail="Not authenticated")
151
-
152
- try:
153
- payload = decode(token, auth_views.SECRET_KEY, algorithms=[auth_views.ALGORITHM])
154
- user_email = payload.get("sub")
155
- if user_email is None:
156
- raise HTTPException(status_code=401, detail="Not authenticated")
157
- except PyJWTError:
158
- raise HTTPException(status_code=401, detail="Could not validate credentials")
159
 
160
  db_user = get_user_by_email(db, user_email)
161
  if db_user is None or not db_user.is_verified:
162
  raise HTTPException(status_code=401, detail="User not found or not verified in the database")
163
 
 
164
  return templates.TemplateResponse("protected.html", {"request": request, "user": db_user.username})
165
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
166
  #async def get_protected(
167
  # request: Request,
168
  # token: str = Query(None), # Accept token from query parameters
 
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
 
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
12
  #import auth
13
  #import tts
14
  import os
 
138
  # Redirect to the protected route with the token as a query parameter (or as required by your front-end/client)
139
  return RedirectResponse(url=f"/protected?token={access_token}")
140
 
141
+ #from jwt import decode, PyJWTError # make sure jwt is imported
 
 
142
 
143
  @app.get("/protected", response_class=HTMLResponse)
144
+ async def get_protected(
145
+ request: Request,
146
+ token: str = Depends(verify_token), # Use Depends to inject the token after verification
147
+ db: Session = Depends(get_db)
148
+ ):
149
+ user_email = token # As verify_token returns the 'sub' which is user email
 
 
 
 
 
 
 
150
 
151
  db_user = get_user_by_email(db, user_email)
152
  if db_user is None or not db_user.is_verified:
153
  raise HTTPException(status_code=401, detail="User not found or not verified in the database")
154
 
155
+ # Render a template response
156
  return templates.TemplateResponse("protected.html", {"request": request, "user": db_user.username})
157
 
158
+ #@app.get("/protected", response_class=HTMLResponse)
159
+ #async def get_protected(request: Request, token: Optional[str] = None, db: Session = Depends(get_db)):
160
+ # Try to get the token from the query parameter first, then fall back to the cookie
161
+ # token = token or request.cookies.get("access_token")
162
+ # if not token:
163
+ # raise HTTPException(status_code=401, detail="Not authenticated")
164
+
165
+ # try:
166
+ # payload = decode(token, auth_views.SECRET_KEY, algorithms=[auth_views.ALGORITHM])
167
+ # user_email = payload.get("sub")
168
+ # if user_email is None:
169
+ # raise HTTPException(status_code=401, detail="Not authenticated")
170
+ # except PyJWTError:
171
+ # raise HTTPException(status_code=401, detail="Could not validate credentials")
172
+
173
+ # db_user = get_user_by_email(db, user_email)
174
+ # if db_user is None or not db_user.is_verified:
175
+ # raise HTTPException(status_code=401, detail="User not found or not verified in the database")
176
+
177
+ # return templates.TemplateResponse("protected.html", {"request": request, "user": db_user.username})
178
+
179
  #async def get_protected(
180
  # request: Request,
181
  # token: str = Query(None), # Accept token from query parameters