File tree Expand file tree Collapse file tree 4 files changed +71
-62
lines changed Expand file tree Collapse file tree 4 files changed +71
-62
lines changed Original file line number Diff line number Diff line change 12
12
from fastapi_oauth2 .middleware import User
13
13
from fastapi_oauth2 .router import router as oauth2_router
14
14
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
16
17
17
18
Base .metadata .create_all (bind = engine )
18
19
@@ -36,7 +37,8 @@ async def on_auth(auth: Auth, user: User):
36
37
37
38
38
39
app = FastAPI ()
39
- app .include_router (app_router )
40
+ app .include_router (router_api )
41
+ app .include_router (router_ssr )
40
42
app .include_router (oauth2_router )
41
43
app .mount ("/static" , StaticFiles (directory = "static" ), name = "static" )
42
44
app .add_middleware (OAuth2Middleware , config = oauth2_config , callback = on_auth )
Load Diff This file was deleted.
Original file line number Diff line number Diff line change
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
+
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
Original file line number Diff line number Diff line change
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
+ })
You can’t perform that action at this time.
0 commit comments