Files
ctms/frontend/src/api/projectPermissions.ts
T
Cheng Zhou 387d035b08 前端权限管理:实现接口级权限管理UI和监控仪表板
新增功能:
- 新增 ApiPermissions.vue 主页面,支持模块级/接口级权限切换
- 新增 ProjectPermissionsModule.vue 组件,展示模块级权限矩阵
- 新增 ApiEndpointPermissions.vue 组件,展示接口级权限矩阵
- 新增 PermissionMonitoring.vue 组件,展示权限系统监控仪表板
- 更新 projectPermissions.ts API 客户端,支持接口级权限和监控API
- 新增权限相关的 TypeScript 类型定义
- 更新路由配置,添加接口级权限管理路由
- 更新国际化文本,添加权限管理相关的中文文本

API 客户端新增函数:
- fetchApiEndpointPermissions: 获取接口级权限矩阵
- updateApiEndpointPermissions: 更新接口级权限矩阵
- fetchPermissionMetrics: 获取权限检查指标
- fetchCacheStats: 获取缓存统计
- fetchPermissionAlerts: 获取告警列表
- fetchPermissionHealth: 获取系统健康状态
- resetPermissionMetrics: 重置指标
- clearPermissionAlerts: 清除告警

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-05-14 09:19:07 +08:00

48 lines
1.8 KiB
TypeScript

import { apiGet, apiPut, apiPost } from "./axios";
import type {
ProjectRolePermissionsResponse,
ProjectRolePermissionsUpdate,
ApiEndpointPermissionsResponse,
ApiEndpointPermissionsUpdate,
PermissionMetricsResponse,
CacheStatsResponse,
AlertsResponse,
HealthResponse,
} from "../types/api";
// 模块级权限(现有)
export const fetchProjectRolePermissions = (studyId: string) =>
apiGet<ProjectRolePermissionsResponse>(`/api/v1/studies/${studyId}/permissions/`);
export const updateProjectRolePermissions = (studyId: string, payload: ProjectRolePermissionsUpdate) =>
apiPut<ProjectRolePermissionsResponse>(`/api/v1/studies/${studyId}/permissions/`, payload);
// 接口级权限(新增)
export const fetchApiEndpointPermissions = (studyId: string) =>
apiGet<ApiEndpointPermissionsResponse>(`/api/v1/studies/${studyId}/api-permissions`);
export const updateApiEndpointPermissions = (studyId: string, payload: ApiEndpointPermissionsUpdate) =>
apiPut<ApiEndpointPermissionsResponse>(`/api/v1/studies/${studyId}/api-permissions`, payload);
// 权限系统监控API(新增)
export const fetchPermissionMetrics = () =>
apiGet<PermissionMetricsResponse>(`/api/v1/permission-monitoring/metrics`);
export const fetchCacheStats = () =>
apiGet<CacheStatsResponse>(`/api/v1/permission-monitoring/cache-stats`);
export const fetchPermissionAlerts = (level?: string, limit?: number) =>
apiGet<AlertsResponse>(`/api/v1/permission-monitoring/alerts`, {
params: { level, limit },
});
export const fetchPermissionHealth = () =>
apiGet<HealthResponse>(`/api/v1/permission-monitoring/health`);
export const resetPermissionMetrics = () =>
apiPost<void>(`/api/v1/permission-monitoring/reset-metrics`);
export const clearPermissionAlerts = () =>
apiPost<void>(`/api/v1/permission-monitoring/clear-alerts`);