feat: add role management API service with permission support
This commit is contained in:
@@ -0,0 +1,80 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
import type { PageResponse } from './user.api'
|
||||||
|
|
||||||
|
export interface Role {
|
||||||
|
id: number
|
||||||
|
name: string
|
||||||
|
code: string
|
||||||
|
description: string
|
||||||
|
status: 'ACTIVE' | 'INACTIVE'
|
||||||
|
permissions: Permission[]
|
||||||
|
createdAt: string
|
||||||
|
updatedAt: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Permission {
|
||||||
|
id: number
|
||||||
|
name: string
|
||||||
|
code: string
|
||||||
|
resource: string
|
||||||
|
action: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CreateRoleRequest {
|
||||||
|
name: string
|
||||||
|
code: string
|
||||||
|
description: string
|
||||||
|
permissions: number[]
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface UpdateRoleRequest {
|
||||||
|
name?: string
|
||||||
|
description?: string
|
||||||
|
status?: 'ACTIVE' | 'INACTIVE'
|
||||||
|
permissions?: number[]
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface RolePageRequest {
|
||||||
|
page: number
|
||||||
|
size: number
|
||||||
|
name?: string
|
||||||
|
code?: string
|
||||||
|
status?: string
|
||||||
|
sortBy?: string
|
||||||
|
sortOrder?: 'asc' | 'desc'
|
||||||
|
}
|
||||||
|
|
||||||
|
export const roleApi = {
|
||||||
|
getAll: () =>
|
||||||
|
request.get<Role[]>('/roles'),
|
||||||
|
|
||||||
|
getPage: (params: RolePageRequest) =>
|
||||||
|
request.get<PageResponse<Role>>('/roles/page', { params }),
|
||||||
|
|
||||||
|
getById: (id: number) =>
|
||||||
|
request.get<Role>(`/roles/${id}`),
|
||||||
|
|
||||||
|
create: (data: CreateRoleRequest) =>
|
||||||
|
request.post<Role>('/roles', data),
|
||||||
|
|
||||||
|
update: (id: number, data: UpdateRoleRequest) =>
|
||||||
|
request.put<Role>(`/roles/${id}`, data),
|
||||||
|
|
||||||
|
delete: (id: number) =>
|
||||||
|
request.delete<void>(`/roles/${id}`),
|
||||||
|
|
||||||
|
batchDelete: (ids: number[]) =>
|
||||||
|
request.post<void>('/roles/batch-delete', { ids }),
|
||||||
|
|
||||||
|
updateStatus: (id: number, status: 'ACTIVE' | 'INACTIVE') =>
|
||||||
|
request.put<void>(`/roles/${id}/status`, { status }),
|
||||||
|
|
||||||
|
assignPermissions: (id: number, permissionIds: number[]) =>
|
||||||
|
request.post<void>(`/roles/${id}/permissions`, { permissionIds }),
|
||||||
|
|
||||||
|
getPermissions: (id: number) =>
|
||||||
|
request.get<Permission[]>(`/roles/${id}/permissions`),
|
||||||
|
|
||||||
|
getAllPermissions: () =>
|
||||||
|
request.get<Permission[]>('/permissions'),
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user