Skip to content

Commit d15d0a7

Browse files
updated auth required
1 parent ce05c97 commit d15d0a7

File tree

2 files changed

+29
-55
lines changed

2 files changed

+29
-55
lines changed

src/oauth2.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11
from datetime import datetime, timedelta
2+
from urllib.request import Request
23
from fastapi import Depends, status, HTTPException
34
from fastapi.security import OAuth2PasswordBearer
5+
from fastapi.responses import RedirectResponse
46
from jose import JWTError, jwt
57
from sqlalchemy.orm import Session
68

9+
from src import app
710
from src.config import settings
811
from src.helpers import database
912
import src.models as models
1013
import src.schemas as schemas
1114

15+
from functools import wraps
1216

1317
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="login")
1418

@@ -35,7 +39,7 @@ def verify_access_token(token: str, credentials_exception):
3539

3640
if id is None:
3741
raise credentials_exception
38-
42+
3943
token_data = schemas.TokenData(id=id)
4044

4145

@@ -59,4 +63,13 @@ def get_current_user(token: str = Depends(oauth2_scheme), db: Session = Depends(
5963
return user
6064

6165

62-
# def AuthRequired():
66+
def auth_required(router):
67+
@wraps(router)
68+
def authorize_cookie(**kwargs):
69+
auth_token = kwargs['request'].cookies.get('Authorization')
70+
if (auth_token):
71+
token_type, jwt_token = auth_token.split(' ')
72+
verify_access_token(jwt_token, HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="Invalid Credentials"))
73+
return router(**kwargs)
74+
return RedirectResponse(app.ui_router.url_path_for('signin'))
75+
return authorize_cookie

src/routers/ui_routes.py

Lines changed: 14 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from wsgiref.handlers import read_environ
12
from fastapi import APIRouter, Request, Depends, status, Response, HTTPException
23
from fastapi.responses import RedirectResponse
34
from fastapi.responses import HTMLResponse
@@ -8,10 +9,10 @@
89
from sqlalchemy.orm import Session
910
from src.helpers.database import get_db
1011

12+
from src import app
1113
import src.oauth2 as oauth2
1214
from src.config import Settings
1315
from src import models, schemas
14-
from src import app
1516

1617

1718
router = APIRouter(
@@ -23,15 +24,9 @@
2324

2425

2526
@router.get("/", status_code=status.HTTP_200_OK)
27+
@oauth2.auth_required
2628
async def home(request: Request, response_model=HTMLResponse, db: Session = Depends(get_db)):
27-
auth_token = request.cookies.get('Authorization')
28-
29-
if (auth_token):
30-
token_type, jwt_token = auth_token.split(' ')
31-
oauth2.verify_access_token(jwt_token, HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="Invalid Credentials"))
32-
return TEMPLATES.TemplateResponse("home/index.html", {"request" : request})
33-
34-
return RedirectResponse(router.url_path_for('signin'))
29+
return TEMPLATES.TemplateResponse("home/index.html", {"request" : request})
3530

3631

3732
@router.get("/login", status_code=status.HTTP_200_OK)
@@ -93,65 +88,31 @@ async def register(request: Request, response_model=HTMLResponse):
9388
return TEMPLATES.TemplateResponse("accounts/register.html", {"request" : request})
9489

9590
@router.get('/tables', status_code=status.HTTP_200_OK)
91+
@oauth2.auth_required
9692
def tables(request: Request):
97-
98-
auth_token = request.cookies.get('Authorization')
99-
100-
if (auth_token):
101-
token_type, jwt_token = auth_token.split(' ')
102-
oauth2.verify_access_token(jwt_token, HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="Invalid Credentials"))
103-
return TEMPLATES.TemplateResponse("home/tables.html", {"request" : request})
104-
105-
return RedirectResponse(router.url_path_for('signin'))
106-
107-
93+
return TEMPLATES.TemplateResponse("home/tables.html", {"request" : request})
10894

10995

11096
@router.get('/billing', status_code=status.HTTP_200_OK)
97+
@oauth2.auth_required
11198
def billing(request: Request):
112-
auth_token = request.cookies.get('Authorization')
113-
114-
if (auth_token):
115-
token_type, jwt_token = auth_token.split(' ')
116-
oauth2.verify_access_token(jwt_token, HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="Invalid Credentials"))
117-
return TEMPLATES.TemplateResponse("home/billing.html", {"request" : request})
118-
119-
return RedirectResponse(router.url_path_for('signin'))
99+
return TEMPLATES.TemplateResponse("home/billing.html", {"request" : request})
120100

121101
@router.get('/virtual-reality', status_code=status.HTTP_200_OK)
102+
@oauth2.auth_required
122103
def virtual_reality(request: Request):
123-
auth_token = request.cookies.get('Authorization')
124-
125-
if (auth_token):
126-
token_type, jwt_token = auth_token.split(' ')
127-
oauth2.verify_access_token(jwt_token, HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="Invalid Credentials"))
128-
return TEMPLATES.TemplateResponse("home/virtual-reality.html", {"request" : request})
129-
130-
return RedirectResponse(router.url_path_for('signin'))
104+
return TEMPLATES.TemplateResponse("home/virtual-reality.html", {"request" : request})
131105

132106

133107

134108
@router.get('/profile', status_code=status.HTTP_200_OK)
109+
@oauth2.auth_required
135110
def profile(request: Request):
136-
137-
auth_token = request.cookies.get('Authorization')
138-
139-
if (auth_token):
140-
token_type, jwt_token = auth_token.split(' ')
141-
oauth2.verify_access_token(jwt_token, HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="Invalid Credentials"))
142-
return TEMPLATES.TemplateResponse("home/profile.html", {"request" : request})
143-
144-
return RedirectResponse(router.url_path_for('signin'))
111+
return TEMPLATES.TemplateResponse("home/profile.html", {"request" : request})
145112

146113

147114

148115
@router.get('/rtl', status_code=status.HTTP_200_OK)
116+
@oauth2.auth_required
149117
def rtl(request: Request):
150-
auth_token = request.cookies.get('Authorization')
151-
152-
if (auth_token):
153-
token_type, jwt_token = auth_token.split(' ')
154-
oauth2.verify_access_token(jwt_token, HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="Invalid Credentials"))
155-
return TEMPLATES.TemplateResponse("home/rtl.html", {"request" : request})
156-
157-
return RedirectResponse(router.url_path_for('signin'))
118+
return TEMPLATES.TemplateResponse("home/rtl.html", {"request" : request})

0 commit comments

Comments
 (0)