Skip to content

Commit ea77502

Browse files
committed
Fix: made swagger ui's authrize button work.
Swagger config setting: app = FastAPI(swagger_ui_parameters={"persistAuthorization": True}) Ref: swagger-api/swagger-ui#8683 (comment)
1 parent 7629b98 commit ea77502

File tree

5 files changed

+58
-6
lines changed

5 files changed

+58
-6
lines changed

admin/auth.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
router = APIRouter()
2121
templates = Jinja2Templates(directory='templates')
2222

23-
cookie_scheme = APIKeyCookie(name="session_id", description="Session Cookie Auth")
23+
cookie_scheme = APIKeyCookie(name="session_id", description="Admin session_id is created by create_session.sh")
2424

2525
def get_session_by_session_id(session_id: str, cs: Session):
2626
try:

data/create_data.sh

+14-3
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,19 @@ done
2828
echo "Customer:"
2929
echo "select * from customer" | sqlite3 $DB | tail
3030

31-
echo "Sessions:"
32-
echo "select * from sessions" | sqlite3 data/cache.db
33-
3431
echo "Users:"
3532
echo "select * from user" | sqlite3 $DB
33+
34+
pwgen(){
35+
basenc --base64url < /dev/urandom | head -c 64 ; echo
36+
}
37+
38+
39+
ssid=$(pwgen)
40+
41+
DB=data/cache.db
42+
43+
echo "insert or replace into sessions (id, session_id,user_id,email) values (1, '$ssid', 1, '$email')" | sqlite3 $DB
44+
echo "Sessions:"
45+
echo "select * from sessions" | sqlite3 $DB
46+

data/db.py

+9-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class User(DataStoreBase):
4242
class Sessions(CacheStoreBase):
4343
__tablename__ = 'sessions'
4444
id = Column('id', Integer, primary_key = True, autoincrement = True)
45-
session_id = Column('session_id', String(64))
45+
session_id = Column('session_id', String(254))
4646
user_id = Column('user_id', Integer)
4747
email = Column('email', String(254))
4848

@@ -67,6 +67,14 @@ class UserBase(BaseModel):
6767
class Config:
6868
from_attributes = True
6969

70+
class SessionBase(BaseModel):
71+
id: int
72+
session_id: str
73+
user_id: int
74+
email: EmailStr
75+
class Config:
76+
from_attributes = True
77+
7078
DataStoreBase.metadata.create_all(bind=DataStore)
7179
CacheStoreBase.metadata.create_all(bind=CacheStore)
7280

data/renew_admin_session.sh

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#!/bin/bash
2+
3+
pwgen(){
4+
basenc --base64url < /dev/urandom | head -c 64 ; echo
5+
}
6+
7+
8+
ssid=$(pwgen)
9+
10+
DB=data/cache.db
11+
12+
delete(){
13+
echo "delete from sessions where email = '[email protected]'" | sqlite3 $DB
14+
}
15+
16+
delete_all(){
17+
echo "delete from sessions" | sqlite3 $DB
18+
}
19+
20+
insert_or_replace(){
21+
echo "insert or replace into sessions (id, session_id,user_id,email)
22+
values (1, '$ssid', 1, '$email')" | sqlite3 $DB
23+
}
24+
25+
check(){
26+
echo "Sessions:"
27+
echo "select * from sessions" | sqlite3 $DB
28+
echo "session_id:" $ssid
29+
}
30+
31+
insert_or_replace
32+
check
33+

main.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from htmx import htmx, htmx_secret, spa
66
from images import image
77

8-
app = FastAPI()
8+
app = FastAPI(swagger_ui_parameters={"persistAuthorization": True})
99

1010
app.include_router(
1111
spa.router,

0 commit comments

Comments
 (0)