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
|
||||
- password: 123456
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
from fastapi import APIRouter
|
||||
|
||||
from app.core.dependency import DependPermisson
|
||||
from app.core.dependency import DependPermission
|
||||
|
||||
from .apis import apis_router
|
||||
from .auditlog import auditlog_router
|
||||
@ -13,9 +13,9 @@ from .users import users_router
|
||||
v1_router = APIRouter()
|
||||
|
||||
v1_router.include_router(base_router, prefix="/base")
|
||||
v1_router.include_router(users_router, prefix="/user", dependencies=[DependPermisson])
|
||||
v1_router.include_router(roles_router, prefix="/role", dependencies=[DependPermisson])
|
||||
v1_router.include_router(menus_router, prefix="/menu", dependencies=[DependPermisson])
|
||||
v1_router.include_router(apis_router, prefix="/api", dependencies=[DependPermisson])
|
||||
v1_router.include_router(depts_router, prefix="/dept", dependencies=[DependPermisson])
|
||||
v1_router.include_router(auditlog_router, prefix="/auditlog", dependencies=[DependPermisson])
|
||||
v1_router.include_router(users_router, prefix="/user", dependencies=[DependPermission])
|
||||
v1_router.include_router(roles_router, prefix="/role", dependencies=[DependPermission])
|
||||
v1_router.include_router(menus_router, prefix="/menu", dependencies=[DependPermission])
|
||||
v1_router.include_router(apis_router, prefix="/api", dependencies=[DependPermission])
|
||||
v1_router.include_router(depts_router, prefix="/dept", dependencies=[DependPermission])
|
||||
v1_router.include_router(auditlog_router, prefix="/auditlog", dependencies=[DependPermission])
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
from datetime import datetime
|
||||
from fastapi import APIRouter, Query
|
||||
from tortoise.expressions import Q
|
||||
|
||||
@ -16,9 +17,10 @@ async def get_audit_log_list(
|
||||
module: str = Query("", description="功能模块"),
|
||||
method: str = Query("", description="请求方法"),
|
||||
summary: str = Query("", description="接口描述"),
|
||||
path: str = Query("", description="请求路径"),
|
||||
status: int = Query(None, description="状态码"),
|
||||
start_time: str = Query("", description="开始时间"),
|
||||
end_time: str = Query("", description="结束时间"),
|
||||
start_time: datetime = Query("", description="开始时间"),
|
||||
end_time: datetime = Query("", description="结束时间"),
|
||||
):
|
||||
q = Q()
|
||||
if username:
|
||||
@ -29,6 +31,8 @@ async def get_audit_log_list(
|
||||
q &= Q(method__icontains=method)
|
||||
if summary:
|
||||
q &= Q(summary__icontains=summary)
|
||||
if path:
|
||||
q &= Q(path__icontains=path)
|
||||
if status:
|
||||
q &= Q(status=status)
|
||||
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.users import UpdatePassword
|
||||
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
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@ -50,4 +50,4 @@ class PermissionControl:
|
||||
|
||||
|
||||
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:
|
||||
try:
|
||||
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:
|
||||
pass
|
||||
|
||||
|
||||
@ -87,7 +87,7 @@ async function handleLogin() {
|
||||
}
|
||||
try {
|
||||
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() })
|
||||
$message.success(t('views.login.message_login_success'))
|
||||
setToken(res.data.access_token)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user