FPSMS-frontend
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 

58 lignes
1.3 KiB

  1. import { serverFetchJson } from "@/app/utils/fetchUtil";
  2. import { BASE_API_URL } from "@/config/api";
  3. import { cache } from "react";
  4. import "server-only";
  5. export interface UserResult {
  6. action: any;
  7. id: number;
  8. username: string;
  9. // name: string;
  10. }
  11. // export interface DetailedUser extends UserResult {
  12. // username: string;
  13. // password: string
  14. // }
  15. export interface UserDetail {
  16. data: UserResult;
  17. authIds: number[];
  18. groupIds: number[];
  19. auths: any[]
  20. }
  21. export type passwordRule = {
  22. min: number;
  23. max: number;
  24. number: boolean;
  25. upperEng: boolean;
  26. lowerEng: boolean;
  27. specialChar: boolean;
  28. }
  29. export const preloadUser = () => {
  30. fetchUser();
  31. };
  32. export const preloadUserDetail = (id: number) => {
  33. fetchUserDetail(id);
  34. };
  35. export const fetchUser = cache(async () => {
  36. return serverFetchJson<UserResult[]>(`${BASE_API_URL}/user`, {
  37. next: { tags: ["user"] },
  38. });
  39. });
  40. export const fetchUserDetail = cache(async (id: number) => {
  41. return serverFetchJson<UserResult[]>(`${BASE_API_URL}/user/${id}`, {
  42. next: { tags: ["user"] },
  43. });
  44. });
  45. export const fetchPwRules = cache(async () => {
  46. return serverFetchJson<passwordRule>(`${BASE_API_URL}/user/password-rule`, {
  47. next: { tags: ["pwRule"] },
  48. });
  49. });