userService.ts 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import { apiClient } from './apiClient';
  2. export const userService = {
  3. async changePassword(currentPassword: string, newPassword: string): Promise<{ message: string }> {
  4. const { data } = await apiClient.put('/users/password', {
  5. currentPassword,
  6. newPassword,
  7. });
  8. return data;
  9. },
  10. async getUsers(page?: number, limit?: number): Promise<any> {
  11. const params = new URLSearchParams();
  12. if (page) params.append('page', page.toString());
  13. if (limit) params.append('limit', limit.toString());
  14. const { data } = await apiClient.get(`/users?${params.toString()}`);
  15. return data;
  16. },
  17. async updateUser(userId: string, isAdmin: boolean): Promise<{ message: string }> {
  18. const { data } = await apiClient.put(`/users/${userId}`, {
  19. isAdmin,
  20. });
  21. return data;
  22. },
  23. async updateUserInfo(userId: string, userData: { username?: string; isAdmin?: boolean; password?: string; displayName?: string }): Promise<{ message: string }> {
  24. const { data } = await apiClient.put(`/users/${userId}`, userData);
  25. return data;
  26. },
  27. async deleteUser(userId: string): Promise<{ message: string }> {
  28. const { data } = await apiClient.delete(`/users/${userId}`);
  29. return data;
  30. },
  31. async createUser(username: string, password: string, isAdmin: boolean = false, tenantId?: string, displayName?: string): Promise<{ message: string }> {
  32. const { data } = await apiClient.post('/users', {
  33. username,
  34. password,
  35. isAdmin,
  36. tenantId,
  37. displayName,
  38. });
  39. return data;
  40. },
  41. async exportUsers(): Promise<Blob> {
  42. return await apiClient.getBlob('/v1/admin/users/export');
  43. },
  44. async importUsers(file: File): Promise<any> {
  45. const formData = new FormData();
  46. formData.append('file', file);
  47. const { data } = await apiClient.postMultipart('/v1/admin/users/import', formData);
  48. return data;
  49. },
  50. };