useAuth.uts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. /**
  2. * 认证相关组合式函数
  3. */
  4. import {
  5. saveAccessToken,
  6. getAccessToken,
  7. clearAccessToken,
  8. saveUserInfo,
  9. getUserInfo,
  10. clearUserInfo,
  11. clearAll
  12. } from '../utils/storage'
  13. import type { UserInfo } from '../types/user'
  14. // 定义返回类型
  15. type AuthComposable = {
  16. saveLoginInfo: (accessToken: string, userInfo: UTSJSONObject) => void
  17. getCurrentUserInfo: () => UTSJSONObject | null
  18. getCurrentAccessToken: () => string | null
  19. isLoggedIn: () => boolean
  20. logout: () => void
  21. }
  22. /**
  23. * 认证管理
  24. */
  25. export const useAuth = (): AuthComposable => {
  26. /**
  27. * 保存登录信息
  28. */
  29. const saveLoginInfo = (accessToken: string, userInfo: UTSJSONObject): void => {
  30. saveAccessToken(accessToken)
  31. saveUserInfo(userInfo)
  32. }
  33. /**
  34. * 获取当前用户信息
  35. */
  36. const getCurrentUserInfo = (): UTSJSONObject | null => {
  37. return getUserInfo()
  38. }
  39. /**
  40. * 获取当前 AccessToken
  41. */
  42. const getCurrentAccessToken = (): string | null => {
  43. return getAccessToken()
  44. }
  45. /**
  46. * 检查是否已登录
  47. */
  48. const isLoggedIn = (): boolean => {
  49. const token = getAccessToken()
  50. return token != null && token.length > 0
  51. }
  52. /**
  53. * 退出登录
  54. */
  55. const logout = (): void => {
  56. clearAll()
  57. // 跳转登录页
  58. uni.reLaunch({
  59. url: '/pages/login/index'
  60. })
  61. }
  62. return {
  63. saveLoginInfo,
  64. getCurrentUserInfo,
  65. getCurrentAccessToken,
  66. isLoggedIn,
  67. logout
  68. }
  69. }