auth.ts 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import { getAccessToken } from './tokenStorage'
  2. import { useAuthStore } from '@/store/modules/auth'
  3. import { ROUTE_LOGIN_INDEX } from '@/constants/routes'
  4. const TAB_BAR_PAGES = ['/pages/meal/index', '/pages/order/index', '/pages/profile/index']
  5. const DEFAULT_LOGIN_PROMPT = {
  6. title: '需要登录',
  7. content: '该功能需登录后使用,是否前往登录?',
  8. confirmText: '去登录',
  9. cancelText: '稍后再说'
  10. }
  11. export function getToken() {
  12. return getAccessToken()
  13. }
  14. export function isLoggedIn() {
  15. const auth = useAuthStore()
  16. if (!auth.token) auth.initAuth()
  17. return auth.loggedIn
  18. }
  19. export function isTabBarPage(url: string) {
  20. const path = url.split('?')[0]
  21. return TAB_BAR_PAGES.includes(path)
  22. }
  23. function goLogin(redirect?: string) {
  24. const target = `${ROUTE_LOGIN_INDEX}${redirect ? `?redirect=${encodeURIComponent(redirect)}` : ''}`
  25. uni.navigateTo({
  26. url: target,
  27. fail: () => uni.reLaunch({ url: target })
  28. })
  29. }
  30. export function requireLogin() {
  31. if (isLoggedIn()) return true
  32. uni.showModal({
  33. ...DEFAULT_LOGIN_PROMPT,
  34. success: res => {
  35. if (res.confirm) goLogin()
  36. }
  37. })
  38. return false
  39. }
  40. export function requireLoginNavigate(redirect?: string) {
  41. if (isLoggedIn()) return true
  42. goLogin(redirect)
  43. return false
  44. }