Files
zclaw_openfang/admin-v2/src/services/roles.ts
iven 2fd6d08899
Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
fix: SaaS Admin + Tauri 一致性审查修复
- 删除 webhook 死代码模块 (4 文件 + worker,未注册未挂载)
- 删除孤立组件 StatusTag.tsx (从未被导入)
- authStore 权限模型补全 (scheduler/knowledge/billing 6+ permission key)
- authStore 硬编码 logout URL 改为 env 变量
- 清理未使用 service 方法 (agent-templates/billing/roles)
- Logs.tsx 代码重复消除 (本地常量 → @/constants/status)
- TRUTH.md 数字校准 (Tauri 177→183, SaaS API 131→130)
2026-04-07 01:53:54 +08:00

41 lines
2.0 KiB
TypeScript

import request, { withSignal } from './request'
import type {
Role,
PermissionTemplate,
CreateRoleRequest,
UpdateRoleRequest,
CreateTemplateRequest,
} from '@/types'
export const roleService = {
// ── Roles ─────────────────────────────────────────────────
list: (signal?: AbortSignal) =>
request.get<Role[]>('/roles', withSignal({}, signal)).then((r) => r.data),
create: (data: CreateRoleRequest, signal?: AbortSignal) =>
request.post<Role>('/roles', data, withSignal({}, signal)).then((r) => r.data),
update: (id: string, data: UpdateRoleRequest, signal?: AbortSignal) =>
request.put<Role>(`/roles/${id}`, data, withSignal({}, signal)).then((r) => r.data),
delete: (id: string, signal?: AbortSignal) =>
request.delete(`/roles/${id}`, withSignal({}, signal)).then((r) => r.data),
// ── Role Permissions ──────────────────────────────────────
getPermissions: (roleId: string, signal?: AbortSignal) =>
request.get<string[]>(`/roles/${roleId}/permissions`, withSignal({}, signal)).then((r) => r.data),
// ── Permission Templates ──────────────────────────────────
listTemplates: (signal?: AbortSignal) =>
request.get<PermissionTemplate[]>('/permission-templates', withSignal({}, signal)).then((r) => r.data),
createTemplate: (data: CreateTemplateRequest, signal?: AbortSignal) =>
request.post<PermissionTemplate>('/permission-templates', data, withSignal({}, signal)).then((r) => r.data),
deleteTemplate: (id: string, signal?: AbortSignal) =>
request.delete(`/permission-templates/${id}`, withSignal({}, signal)).then((r) => r.data),
applyTemplate: (templateId: string, accountIds: string[], signal?: AbortSignal) =>
request.post(`/permission-templates/${templateId}/apply`, { account_ids: accountIds }, withSignal({}, signal)).then((r) => r.data),
}