feat: implement AdminRoute for admin access control and enhance UsersPage with user management features
This commit is contained in:
54
src/lib/api/services/admin.ts
Normal file
54
src/lib/api/services/admin.ts
Normal file
@@ -0,0 +1,54 @@
|
||||
import { apiClient } from '../client'
|
||||
import type { User } from '@/types/auth'
|
||||
|
||||
export interface Plan {
|
||||
id: number
|
||||
code: string
|
||||
name: string
|
||||
description?: string
|
||||
credits: number
|
||||
max_credits: number
|
||||
created_at: string
|
||||
updated_at: string
|
||||
}
|
||||
|
||||
export interface UserUpdate {
|
||||
name?: string
|
||||
plan_id?: number
|
||||
credits?: number
|
||||
is_active?: boolean
|
||||
}
|
||||
|
||||
export interface MessageResponse {
|
||||
message: string
|
||||
}
|
||||
|
||||
export class AdminService {
|
||||
async listUsers(limit = 100, offset = 0): Promise<User[]> {
|
||||
return apiClient.get<User[]>(`/api/v1/admin/users/`, {
|
||||
params: { limit, offset }
|
||||
})
|
||||
}
|
||||
|
||||
async getUser(userId: number): Promise<User> {
|
||||
return apiClient.get<User>(`/api/v1/admin/users/${userId}`)
|
||||
}
|
||||
|
||||
async updateUser(userId: number, data: UserUpdate): Promise<User> {
|
||||
return apiClient.patch<User>(`/api/v1/admin/users/${userId}`, data)
|
||||
}
|
||||
|
||||
async disableUser(userId: number): Promise<MessageResponse> {
|
||||
return apiClient.post<MessageResponse>(`/api/v1/admin/users/${userId}/disable`)
|
||||
}
|
||||
|
||||
async enableUser(userId: number): Promise<MessageResponse> {
|
||||
return apiClient.post<MessageResponse>(`/api/v1/admin/users/${userId}/enable`)
|
||||
}
|
||||
|
||||
async listPlans(): Promise<Plan[]> {
|
||||
return apiClient.get<Plan[]>(`/api/v1/admin/users/plans/list`)
|
||||
}
|
||||
}
|
||||
|
||||
export const adminService = new AdminService()
|
||||
Reference in New Issue
Block a user