feat: implement AdminRoute for admin access control and enhance UsersPage with user management features

This commit is contained in:
JSC
2025-08-09 22:37:58 +02:00
parent 59f160609b
commit 936d48fbb9
3 changed files with 429 additions and 9 deletions

View 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()