将接口级权限改为业务语言
1. 更新权限配置格式 - 从 "METHOD:/path" 改为 "module:operation" - 例如: "subjects:create", "visits:update", "risk_issues:delete" - 更易理解和管理 2. 新增权限操作列表 API - GET /api/v1/api-permissions/operations - 返回所有权限操作及其描述 3. 更新前端权限管理界面 - 显示业务语言的权限名称 - 按模块和操作类型筛选 - 改进用户体验 4. 修复导入错误 - 更新 MODULE_TO_ENDPOINTS 为 OPERATION_TO_ENDPOINTS - 禁用 API 端点注册表初始化 Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -20,6 +20,27 @@ from app.core.api_permissions import API_ENDPOINT_PERMISSIONS, PROJECT_PERMISSIO
|
||||
router = APIRouter(prefix="/api-permissions", tags=["api-permissions"])
|
||||
|
||||
|
||||
@router.get(
|
||||
"/operations",
|
||||
summary="获取系统中所有权限操作",
|
||||
description="返回系统中所有权限操作及其描述",
|
||||
)
|
||||
async def list_api_operations() -> dict[str, list[dict]]:
|
||||
"""获取所有权限操作"""
|
||||
operations_list = [
|
||||
{
|
||||
"operation_key": key,
|
||||
"module": config["module"],
|
||||
"action": config["action"],
|
||||
"description": config["description"],
|
||||
"default_roles": config["default_roles"],
|
||||
}
|
||||
for key, config in API_ENDPOINT_PERMISSIONS.items()
|
||||
]
|
||||
|
||||
return {"operations": operations_list}
|
||||
|
||||
|
||||
@router.get(
|
||||
"/endpoints",
|
||||
summary="获取系统中所有已注册的API端点",
|
||||
@@ -48,6 +69,27 @@ async def list_api_endpoints(
|
||||
return {"endpoints": endpoints_list}
|
||||
|
||||
|
||||
@router.get(
|
||||
"/operations",
|
||||
summary="获取系统中所有权限操作",
|
||||
description="返回系统中所有权限操作及其描述",
|
||||
)
|
||||
async def list_api_operations() -> dict[str, list[dict]]:
|
||||
"""获取所有权限操作"""
|
||||
operations_list = [
|
||||
{
|
||||
"operation_key": key,
|
||||
"module": config["module"],
|
||||
"action": config["action"],
|
||||
"description": config["description"],
|
||||
"default_roles": config["default_roles"],
|
||||
}
|
||||
for key, config in API_ENDPOINT_PERMISSIONS.items()
|
||||
]
|
||||
|
||||
return {"operations": operations_list}
|
||||
|
||||
|
||||
@router.get(
|
||||
"",
|
||||
summary="获取项目的接口级权限矩阵",
|
||||
|
||||
@@ -14,6 +14,7 @@ api_router.include_router(sites.router, prefix="/studies/{study_id}/sites", tags
|
||||
api_router.include_router(members.router, prefix="/studies/{study_id}/members", tags=["study-members"])
|
||||
api_router.include_router(project_permissions.router, prefix="/studies/{study_id}/permissions", tags=["project-permissions"])
|
||||
api_router.include_router(api_permissions.router, prefix="/studies/{study_id}", tags=["api-permissions"])
|
||||
api_router.include_router(api_permissions.router, tags=["api-permissions"])
|
||||
api_router.include_router(attachments.router, prefix="/studies/{study_id}/{entity_type}/{entity_id}/attachments", tags=["attachments"])
|
||||
api_router.include_router(attachments.global_router, prefix="/attachments", tags=["attachments"])
|
||||
api_router.include_router(audit_logs.router, prefix="/studies/{study_id}/audit-logs", tags=["audit-logs"])
|
||||
|
||||
Reference in New Issue
Block a user