Skip to content

Commit 1fab83d

Browse files
committed
Segregate the routers into two types
1 parent 50d0ccd commit 1fab83d

File tree

4 files changed

+71
-62
lines changed

4 files changed

+71
-62
lines changed

examples/demonstration/main.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
from fastapi_oauth2.middleware import User
1313
from fastapi_oauth2.router import router as oauth2_router
1414
from models import User as UserModel
15-
from router import router as app_router
15+
from router_api import router_api
16+
from router_ssr import router_ssr
1617

1718
Base.metadata.create_all(bind=engine)
1819

@@ -36,7 +37,8 @@ async def on_auth(auth: Auth, user: User):
3637

3738

3839
app = FastAPI()
39-
app.include_router(app_router)
40+
app.include_router(router_api)
41+
app.include_router(router_ssr)
4042
app.include_router(oauth2_router)
4143
app.mount("/static", StaticFiles(directory="static"), name="static")
4244
app.add_middleware(OAuth2Middleware, config=oauth2_config, callback=on_auth)

examples/demonstration/router.py

Lines changed: 0 additions & 60 deletions
This file was deleted.

examples/demonstration/router_api.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
from fastapi import APIRouter
2+
from fastapi import Request
3+
from fastapi.templating import Jinja2Templates
4+
from starlette.responses import RedirectResponse
5+
6+
from fastapi_oauth2.security import OAuth2
7+
8+
oauth2 = OAuth2()
9+
router_api = APIRouter()
10+
templates = Jinja2Templates(directory="templates")
11+
12+
13+
@router_api.get("/auth")
14+
def sim_auth(request: Request):
15+
access_token = request.auth.jwt_create({
16+
"id": 1,
17+
"identity": "demo:1",
18+
"image": None,
19+
"display_name": "John Doe",
20+
"email": "[email protected]",
21+
"username": "JohnDoe",
22+
"exp": 3689609839,
23+
})
24+
response = RedirectResponse("/")
25+
response.set_cookie(
26+
"Authorization",
27+
value=f"Bearer {access_token}",
28+
max_age=request.auth.expires,
29+
expires=request.auth.expires,
30+
httponly=request.auth.http,
31+
)
32+
return response

examples/demonstration/router_ssr.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import json
2+
3+
from fastapi import APIRouter
4+
from fastapi import Depends
5+
from fastapi import Request
6+
from fastapi.responses import HTMLResponse
7+
from fastapi.templating import Jinja2Templates
8+
from sqlalchemy.orm import Session
9+
10+
from database import get_db
11+
from fastapi_oauth2.security import OAuth2
12+
from models import User
13+
14+
oauth2 = OAuth2()
15+
router_ssr = APIRouter()
16+
templates = Jinja2Templates(directory="templates")
17+
18+
19+
@router_ssr.get("/", response_class=HTMLResponse)
20+
async def root(request: Request):
21+
return templates.TemplateResponse("index.html", {
22+
"json": json,
23+
"request": request,
24+
})
25+
26+
27+
@router_ssr.get("/users", response_class=HTMLResponse)
28+
async def users(request: Request, db: Session = Depends(get_db), _: str = Depends(oauth2)):
29+
return templates.TemplateResponse("users.html", {
30+
"json": json,
31+
"request": request,
32+
"users": [
33+
dict([(k, v) for k, v in user.__dict__.items() if not k.startswith("_")]) for user in db.query(User).all()
34+
],
35+
})

0 commit comments

Comments
 (0)