user.ts 865 B

12345678910111213141516171819202122232425262728293031323334353637
  1. import { LoginProps, loginFetch, userInfoFetch } from "@/request";
  2. import { errorHook, gHeaders } from "@/request/state";
  3. import { UserInfo } from "@/request/type";
  4. import { encodePwd } from "@/util";
  5. import { ref } from "vue";
  6. export const user = ref<UserInfo>();
  7. export const login = async (props: LoginProps) => {
  8. const data = await loginFetch({
  9. ...props,
  10. password: encodePwd(props.password),
  11. });
  12. user.value = data.user;
  13. gHeaders.token = data.token;
  14. localStorage.setItem("token", data.token);
  15. getUserInfo();
  16. };
  17. export const logout = () => {
  18. localStorage.removeItem("token");
  19. };
  20. export const getUserInfo = async () => {
  21. user.value = await userInfoFetch();
  22. };
  23. errorHook.push((code) => {
  24. if (code === 4008) {
  25. logout();
  26. }
  27. });
  28. const token = localStorage.getItem("token");
  29. if (token) {
  30. gHeaders.token = token;
  31. getUserInfo();
  32. }