diff --git a/JWT.py b/JWT.py
index f0e57da..1a343f5 100644
--- a/JWT.py
+++ b/JWT.py
@@ -8,4 +8,5 @@ oauth2_scheme = OAuth2PasswordBearer(
tokenUrl="/api/token"
)
-SECRET_KEY = asyncio.run(database.Database().get_setting('SECRET_KEY'))
\ No newline at end of file
+SECRET_KEY = asyncio.run(database.Database().get_setting('SECRET_KEY'))
+ALGORITHM = "HS256"
\ No newline at end of file
diff --git a/frontend/index.html b/frontend/index.html
index 0a84a1c..275da93 100644
--- a/frontend/index.html
+++ b/frontend/index.html
@@ -1,10 +1,10 @@
-
+
- Welcome to Vuetify 3
+ Findreve
diff --git a/frontend/src/views/Admin.vue b/frontend/src/views/Admin.vue
index 5d372fb..f4031a5 100644
--- a/frontend/src/views/Admin.vue
+++ b/frontend/src/views/Admin.vue
@@ -43,17 +43,9 @@
-
-
-
-
- 关闭菜单
-
-
-
@@ -215,12 +207,6 @@
-
-
-
用户设置
diff --git a/routes/admin.py b/routes/admin.py
index 9bf006e..9b2b795 100644
--- a/routes/admin.py
+++ b/routes/admin.py
@@ -3,6 +3,8 @@ from typing import Annotated, Literal, Optional
from fastapi import Depends, Query
from fastapi import HTTPException
import JWT
+import jwt
+from jwt import InvalidTokenError
from model import database
from model.response import DefaultResponse
from model.items import Item
@@ -15,7 +17,22 @@ async def is_admin(token: Annotated[str, Depends(JWT.oauth2_scheme)]) -> Literal
使用方法:
>>> APIRouter(dependencies=[Depends(is_admin)])
'''
- return True
+ credentials_exception = HTTPException(
+ status_code=401,
+ detail="Could not validate credentials",
+ headers={"WWW-Authenticate": "Bearer"},
+ )
+
+ try:
+ payload = jwt.decode(token, JWT.SECRET_KEY, algorithms=[JWT.ALGORITHM])
+ username = payload.get("sub")
+ if username is None or not await database.Database().get_setting('account') == username:
+ raise credentials_exception
+ else:
+ return True
+ except InvalidTokenError:
+ raise credentials_exception
+
Router = APIRouter(
prefix='/api/admin',
diff --git a/routes/session.py b/routes/session.py
index 7cb52d2..eb6e748 100644
--- a/routes/session.py
+++ b/routes/session.py
@@ -48,7 +48,7 @@ async def login_for_access_token(
user = await authenticate_user(form_data.username, form_data.password)
if not user:
raise HTTPException(
- status_code=status.HTTP_401_UNAUTHORIZED,
+ status_code=401,
detail="Incorrect username or password",
headers={"WWW-Authenticate": "Bearer"},
)