user.ts 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import { login as loginApi, register as registerApi } from "./ps";
  2. export type UserResult = {
  3. success: boolean;
  4. data: {
  5. avatar: string;
  6. username: string;
  7. nickname: string;
  8. roles: Array<string>;
  9. permissions: Array<string>;
  10. accessToken: string;
  11. refreshToken: string;
  12. expires: Date;
  13. };
  14. };
  15. export type RefreshTokenResult = {
  16. success: boolean;
  17. data: {
  18. accessToken: string;
  19. refreshToken: string;
  20. expires: Date;
  21. };
  22. };
  23. function mapUserinfo(raw: any): UserResult {
  24. const u = raw?.userinfo || raw || {};
  25. const role = u.factory_role || u.role || "operator";
  26. return {
  27. success: !!u.token,
  28. data: {
  29. avatar: u.avatar || "",
  30. username: u.username || "",
  31. nickname: u.nickname || u.username || "",
  32. roles: [role === "owner" ? "owner" : "operator"],
  33. permissions: ["*:*:*"],
  34. accessToken: u.token,
  35. refreshToken: u.token,
  36. expires: "2030/12/31 00:00:00" as unknown as Date
  37. }
  38. };
  39. }
  40. /** 登录(FastAdmin /api/user/login) */
  41. export const getLogin = async (data?: any): Promise<UserResult> => {
  42. const raw = await loginApi(data?.username || data?.account, data?.password);
  43. return mapUserinfo(raw);
  44. };
  45. /** 注册工厂或加入工厂 */
  46. export const getRegister = async (data?: object): Promise<UserResult> => {
  47. const raw = await registerApi(data as Record<string, unknown>);
  48. return mapUserinfo(raw);
  49. };
  50. /** FastAdmin 无刷新 token,沿用当前 token */
  51. export const refreshTokenApi = async (data?: any): Promise<RefreshTokenResult> => {
  52. const token = data?.refreshToken || "";
  53. return {
  54. success: true,
  55. data: {
  56. accessToken: token,
  57. refreshToken: token,
  58. expires: "2030/12/31 00:00:00" as unknown as Date
  59. }
  60. };
  61. };