Files
xinmi/frontend/src/api/access.ts
T

21 lines
2.0 KiB
TypeScript
Raw Normal View History

import { get, post, put, del } from '@/utils/request'
export interface AccessRole { id: string; name: string; description: string; permissions: string[]; version: number }
export interface AccessUser { id: string; username: string; email: string; role: string; status: string; custom_role_id: string; is_system_admin: boolean; is_active: boolean }
export interface AccessResource { kind: string; id: string; name: string; owner_id: string; owner_name: string; global: boolean }
export interface AccessGrant { kind: string; resource_id: string; user_id: string }
export interface PermissionModule { id: string; name: string; admin_only?: boolean; permissions: { id: string; name: string }[] }
export interface AccessSnapshot { permissions: string[]; restricted: boolean; administrator: boolean }
const root = '/api/v1/access'
export const getAccess = () => get<{ data: AccessSnapshot }>(`${root}/me`)
export const getAccessCatalog = () => get<{ data: PermissionModule[] }>(`${root}/catalog`)
export const getAccessRoles = () => get<{ data: AccessRole[] }>(`${root}/roles`)
export const saveAccessRole = (role: AccessRole) => role.id ? put(`${root}/roles/${encodeURIComponent(role.id)}`, role) : post(`${root}/roles`, role)
export const deleteAccessRole = (id: string) => del(`${root}/roles/${encodeURIComponent(id)}`)
export const getAccessUsers = () => get<{ data: AccessUser[] }>(`${root}/users`)
export const saveAccessUser = (user: Record<string, unknown>) => user.id ? put(`${root}/users/${encodeURIComponent(String(user.id))}`, user) : post(`${root}/users`, user)
export const deleteAccessUser = (id: string) => del(`${root}/users/${encodeURIComponent(id)}`)
export const getAccessResources = () => get<{ data: AccessResource[] }>(`${root}/resources`)
export const getAccessGrants = () => get<{ data: AccessGrant[] }>(`${root}/grants`)
export const updateAccessGrants = (resources: { kind: string; id: string }[], user_ids: string[], action: string) => post(`${root}/grants`, { resources, user_ids, action })