11import json
22
3+ from fastapi import APIRouter
34from fastapi import Depends
45from fastapi import Request
5- from fastapi import APIRouter
66from fastapi .responses import HTMLResponse
77from fastapi .templating import Jinja2Templates
8+ from sqlalchemy .orm import Session
9+ from starlette .responses import RedirectResponse
810
11+ from database import get_db
912from fastapi_oauth2 .security import OAuth2
13+ from models import User
1014
1115oauth2 = OAuth2 ()
1216router = APIRouter ()
@@ -18,6 +22,39 @@ async def root(request: Request):
1822 return templates .TemplateResponse ("index.html" , {"request" : request , "user" : request .user , "json" : json })
1923
2024
25+ @router .get ("/auth" )
26+ def sim_auth (request : Request ):
27+ access_token = request .auth .jwt_create ({
28+ "id" : 1 ,
29+ "identity" : "demo:1" ,
30+ "image" : None ,
31+ "display_name" : "John Doe" ,
32+ "email" : "john.doe@auth.sim" ,
33+ "username" : "JohnDoe" ,
34+ "exp" : 3689609839 ,
35+ })
36+ response = RedirectResponse ("/" )
37+ response .set_cookie (
38+ "Authorization" ,
39+ value = f"Bearer { access_token } " ,
40+ max_age = request .auth .expires ,
41+ expires = request .auth .expires ,
42+ httponly = request .auth .http ,
43+ )
44+ return response
45+
46+
2147@router .get ("/user" )
22- def user (request : Request , _ : str = Depends (oauth2 )):
48+ def user_get (request : Request , _ : str = Depends (oauth2 )):
2349 return request .user
50+
51+
52+ @router .get ("/users" )
53+ def users_get (request : Request , db : Session = Depends (get_db ), _ : str = Depends (oauth2 )):
54+ return db .query (User ).all ()
55+
56+
57+ @router .post ("/users" )
58+ async def users_post (request : Request , db : Session = Depends (get_db ), _ : str = Depends (oauth2 )):
59+ data = await request .json ()
60+ return User (** data ).save (db )
0 commit comments