userInfo.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. import { ref } from 'vue'
  2. import { postData, setUserToken } from '../api/axios.js'
  3. export function useUserInfo() {
  4. const userInfo = ref({
  5. username: '',
  6. displayname: '',
  7. identity: '',
  8. });
  9. const register = async (username, password) => {
  10. //登录
  11. let registerResult = {};
  12. try {
  13. const response = await postData('/register/', {
  14. username: username,
  15. password: password,
  16. })
  17. console.log(response)
  18. if (response.status === 'success') {
  19. //保存登录信息
  20. Object.keys(response.data).forEach(
  21. key => {
  22. if (key in userInfo.value) {
  23. userInfo.value[key] = response.data[key];
  24. }
  25. }
  26. )
  27. console.log(userInfo.value)
  28. // 将userInfo存入sessionStorage
  29. sessionStorage.setItem('userInfo', userInfo.value);
  30. registerResult.status = 'success';
  31. registerResult.message = '注册成功';
  32. registerResult.data = userInfo;
  33. // 保存用户token
  34. setUserToken(response.data.token);
  35. // 保存用户信息
  36. sessionStorage.setItem('user-info', JSON.stringify(userInfo.value))
  37. }
  38. } catch (error) {
  39. console.log(error)
  40. let message = "注册失败";
  41. if (error.response) {
  42. // 处理后端返回的错误信息
  43. const backendError = error.response.data?.errors
  44. if (backendError) {
  45. message = Object.values(backendError).join('; ')
  46. } else {
  47. message = error.response.data?.message || message
  48. }
  49. }
  50. registerResult.status = 'failed';
  51. registerResult.message = message;
  52. registerResult.data = null;
  53. } finally {
  54. return registerResult;
  55. }
  56. }
  57. const login = async (username, password) => {
  58. let loginResult = {};
  59. try {
  60. const response = await postData('/login/', {
  61. username: username,
  62. password: password,
  63. })
  64. console.log(response)
  65. if (response.status === 'success') {
  66. //保存登录信息
  67. Object.keys(response.data).forEach(
  68. key => {
  69. if (key in userInfo.value) {
  70. userInfo.value[key] = response.data[key];
  71. }
  72. }
  73. )
  74. console.log(userInfo.value)
  75. // 将userInfo存入sessionStorage
  76. sessionStorage.setItem('userInfo', userInfo.value);
  77. loginResult.status = 'success';
  78. loginResult.message = '登录成功';
  79. loginResult.data = userInfo;
  80. // 保存用户token
  81. setUserToken(response.data.token);
  82. // 保存用户信息
  83. sessionStorage.setItem('user-info', JSON.stringify(userInfo.value))
  84. }
  85. } catch (error) {
  86. console.log(error)
  87. let message = "登录失败";
  88. if (error.response) {
  89. // 处理后端返回的错误信息
  90. const backendError = error.response.data?.errors
  91. if (backendError) {
  92. message = Object.values(backendError).join('; ')
  93. } else {
  94. message = error.response.data?.message || message
  95. }
  96. }
  97. loginResult.status = 'failed';
  98. loginResult.message = message;
  99. loginResult.data = null;
  100. } finally {
  101. return loginResult;
  102. }
  103. }
  104. return {
  105. userInfo,
  106. register,
  107. login,
  108. }
  109. }