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) => 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 })