import { axios } from "./BaseAPI"; import type { ModuleCode, Page, PageResult, Permission, Role, RolePayload, AuthorizeUserRole } from "../types"; const BASE_URI = "/user/role"; export const RoleAPI = { async list(req: Page): Promise> { return axios.post(`${BASE_URI}/list`, req); }, async detail(id: string): Promise { return axios.post(`${BASE_URI}/detail`, undefined, { params: { id } }); }, async create(req: RolePayload): Promise { return axios.post(`${BASE_URI}/create`, req); }, async update(req: RolePayload): Promise { return axios.post(`${BASE_URI}/update`, req); }, async remove(id: string): Promise { return axios.post(`${BASE_URI}/delete`, undefined, { params: { id } }); }, /** 查询当前登录用户在模块内可管理的角色。 */ async manageableList(moduleCode: ModuleCode): Promise { return await axios.post(`${BASE_URI}/manageable/list`, undefined, { params: { moduleCode } }); }, /** 查询当前登录用户在模块内可授权给账号的角色。 */ async grantableList(moduleCode: ModuleCode): Promise { return await axios.post(`${BASE_URI}/grantable/list`, undefined, { params: { moduleCode } }); }, /** 查询当前登录用户直属角色详情,不按可管理范围过滤。 */ async currentDetailList(moduleCode?: ModuleCode): Promise { return await axios.post(`${BASE_URI}/current/detail/list`, undefined, { params: { moduleCode } }); }, /** 查询当前登录用户可以给目标角色配置的直接权限 P 候选项。 */ async grantablePermissionList(roleId: string): Promise { return await axios.post(`${BASE_URI}/permission/grantable/list`, undefined, { params: { roleId } }); }, /** 查询目标角色当前可继续转授的权限 D。 */ async delegationList(roleId: string): Promise { return await axios.post(`${BASE_URI}/delegation/list`, undefined, { params: { roleId } }); }, /** 查询当前登录用户可以给目标角色配置的 D 候选项。 */ async grantableDelegationList(roleId: string): Promise { return await axios.post(`${BASE_URI}/delegation/grantable/list`, undefined, { params: { roleId } }); }, /** 覆盖保存目标角色可继续转授的权限 D。 */ async updateDelegation(req: Pick): Promise { await axios.post(`${BASE_URI}/delegation/update`, req); }, /** 查询目标角色可选管理父级。 */ async parentGrantableList(roleId: string): Promise { return await axios.post(`${BASE_URI}/parent/grantable/list`, undefined, { params: { roleId } }); }, /** 保存目标角色管理父级。 */ async updateParent(req: Pick): Promise { await axios.post(`${BASE_URI}/parent/update`, req); }, async authorizedList(userId: string, moduleCode?: ModuleCode): Promise { return axios.post(`${BASE_URI}/authorized/list`, undefined, { params: { userId, moduleCode } }); }, async authorize(req: AuthorizeUserRole): Promise { return axios.post(`${BASE_URI}/authorized/create`, req); }, async authorizedPermission(userId: string): Promise { return axios.post(`${BASE_URI}/authorized/permission`, undefined, { params: { userId } }); } }; export default RoleAPI;