Compare commits
11 Commits
9b6dcd946b
...
79d1bbb43f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
79d1bbb43f | ||
|
|
df6a0352c8 | ||
|
|
4b7c763ff1 | ||
|
|
2c1873e823 | ||
|
|
03a352c18e | ||
|
|
d32a1df922 | ||
|
|
caab8f0078 | ||
|
|
7a49b8db7d | ||
|
|
b910f3b0ef | ||
|
|
2aabb9c1ae | ||
|
|
626b719b77 |
@ -18,7 +18,7 @@
|
|||||||
- **细粒度权限控制**:实现按钮和接口级别的权限控制,确保不同用户或角色在界面操作和接口访问时具有不同的权限限制。
|
- **细粒度权限控制**:实现按钮和接口级别的权限控制,确保不同用户或角色在界面操作和接口访问时具有不同的权限限制。
|
||||||
|
|
||||||
### 在线预览
|
### 在线预览
|
||||||
- http://vue-fastapi-admin.com
|
- [http://47.111.145.81:3000](http://47.111.145.81:3000)
|
||||||
- username: admin
|
- username: admin
|
||||||
- password: 123456
|
- password: 123456
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
from fastapi import APIRouter
|
from fastapi import APIRouter
|
||||||
|
|
||||||
from app.core.dependency import DependPermisson
|
from app.core.dependency import DependPermission
|
||||||
|
|
||||||
from .apis import apis_router
|
from .apis import apis_router
|
||||||
from .auditlog import auditlog_router
|
from .auditlog import auditlog_router
|
||||||
@ -13,9 +13,9 @@ from .users import users_router
|
|||||||
v1_router = APIRouter()
|
v1_router = APIRouter()
|
||||||
|
|
||||||
v1_router.include_router(base_router, prefix="/base")
|
v1_router.include_router(base_router, prefix="/base")
|
||||||
v1_router.include_router(users_router, prefix="/user", dependencies=[DependPermisson])
|
v1_router.include_router(users_router, prefix="/user", dependencies=[DependPermission])
|
||||||
v1_router.include_router(roles_router, prefix="/role", dependencies=[DependPermisson])
|
v1_router.include_router(roles_router, prefix="/role", dependencies=[DependPermission])
|
||||||
v1_router.include_router(menus_router, prefix="/menu", dependencies=[DependPermisson])
|
v1_router.include_router(menus_router, prefix="/menu", dependencies=[DependPermission])
|
||||||
v1_router.include_router(apis_router, prefix="/api", dependencies=[DependPermisson])
|
v1_router.include_router(apis_router, prefix="/api", dependencies=[DependPermission])
|
||||||
v1_router.include_router(depts_router, prefix="/dept", dependencies=[DependPermisson])
|
v1_router.include_router(depts_router, prefix="/dept", dependencies=[DependPermission])
|
||||||
v1_router.include_router(auditlog_router, prefix="/auditlog", dependencies=[DependPermisson])
|
v1_router.include_router(auditlog_router, prefix="/auditlog", dependencies=[DependPermission])
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
from datetime import datetime
|
||||||
from fastapi import APIRouter, Query
|
from fastapi import APIRouter, Query
|
||||||
from tortoise.expressions import Q
|
from tortoise.expressions import Q
|
||||||
|
|
||||||
@ -16,9 +17,10 @@ async def get_audit_log_list(
|
|||||||
module: str = Query("", description="功能模块"),
|
module: str = Query("", description="功能模块"),
|
||||||
method: str = Query("", description="请求方法"),
|
method: str = Query("", description="请求方法"),
|
||||||
summary: str = Query("", description="接口描述"),
|
summary: str = Query("", description="接口描述"),
|
||||||
|
path: str = Query("", description="请求路径"),
|
||||||
status: int = Query(None, description="状态码"),
|
status: int = Query(None, description="状态码"),
|
||||||
start_time: str = Query("", description="开始时间"),
|
start_time: datetime = Query("", description="开始时间"),
|
||||||
end_time: str = Query("", description="结束时间"),
|
end_time: datetime = Query("", description="结束时间"),
|
||||||
):
|
):
|
||||||
q = Q()
|
q = Q()
|
||||||
if username:
|
if username:
|
||||||
@ -29,6 +31,8 @@ async def get_audit_log_list(
|
|||||||
q &= Q(method__icontains=method)
|
q &= Q(method__icontains=method)
|
||||||
if summary:
|
if summary:
|
||||||
q &= Q(summary__icontains=summary)
|
q &= Q(summary__icontains=summary)
|
||||||
|
if path:
|
||||||
|
q &= Q(path__icontains=path)
|
||||||
if status:
|
if status:
|
||||||
q &= Q(status=status)
|
q &= Q(status=status)
|
||||||
if start_time and end_time:
|
if start_time and end_time:
|
||||||
|
|||||||
@ -10,7 +10,7 @@ from app.schemas.base import Fail, Success
|
|||||||
from app.schemas.login import *
|
from app.schemas.login import *
|
||||||
from app.schemas.users import UpdatePassword
|
from app.schemas.users import UpdatePassword
|
||||||
from app.settings import settings
|
from app.settings import settings
|
||||||
from app.utils.jwt import create_access_token
|
from app.utils.jwt_utils import create_access_token
|
||||||
from app.utils.password import get_password_hash, verify_password
|
from app.utils.password import get_password_hash, verify_password
|
||||||
|
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
|
|||||||
@ -50,4 +50,4 @@ class PermissionControl:
|
|||||||
|
|
||||||
|
|
||||||
DependAuth = Depends(AuthControl.is_authed)
|
DependAuth = Depends(AuthControl.is_authed)
|
||||||
DependPermisson = Depends(PermissionControl.has_permission)
|
DependPermission = Depends(PermissionControl.has_permission)
|
||||||
|
|||||||
@ -68,7 +68,14 @@ class HttpAuditLogMiddleware(BaseHTTPMiddleware):
|
|||||||
except json.JSONDecodeError:
|
except json.JSONDecodeError:
|
||||||
try:
|
try:
|
||||||
body = await request.form()
|
body = await request.form()
|
||||||
args.update(body)
|
# args.update(body)
|
||||||
|
for k, v in body.items():
|
||||||
|
if hasattr(v, "filename"): # 文件上传行为
|
||||||
|
args[k] = v.filename
|
||||||
|
elif isinstance(v, list) and v and hasattr(v[0], "filename"):
|
||||||
|
args[k] = [file.filename for file in v]
|
||||||
|
else:
|
||||||
|
args[k] = v
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|||||||
@ -87,7 +87,7 @@ async function handleLogin() {
|
|||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
$message.loading(t('views.login.message_login_success'))
|
$message.loading(t('views.login.message_verifying'))
|
||||||
const res = await api.login({ username, password: password.toString() })
|
const res = await api.login({ username, password: password.toString() })
|
||||||
$message.success(t('views.login.message_login_success'))
|
$message.success(t('views.login.message_login_success'))
|
||||||
setToken(res.data.access_token)
|
setToken(res.data.access_token)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user