backendAuth.ts 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. export interface BackendAuthTokens {
  2. accessToken: string
  3. refreshToken: string
  4. }
  5. const BACKEND_BASE_URL_STORAGE_KEY = 'cmr.backend.baseUrl.v1'
  6. const BACKEND_AUTH_TOKENS_STORAGE_KEY = 'cmr.backend.authTokens.v1'
  7. const DEFAULT_BACKEND_BASE_URL = 'https://api.gotomars.xyz'
  8. const LEGACY_LOCAL_BACKEND_BASE_URLS = [
  9. 'http://127.0.0.1:8080',
  10. 'https://127.0.0.1:8080',
  11. 'http://localhost:8080',
  12. 'https://localhost:8080',
  13. ]
  14. function normalizeString(value: unknown): string {
  15. return typeof value === 'string' ? value.trim() : ''
  16. }
  17. export function normalizeBackendBaseUrl(value: unknown): string {
  18. const normalized = normalizeString(value).replace(/\/+$/, '')
  19. if (LEGACY_LOCAL_BACKEND_BASE_URLS.indexOf(normalized) >= 0) {
  20. return DEFAULT_BACKEND_BASE_URL
  21. }
  22. return normalized || DEFAULT_BACKEND_BASE_URL
  23. }
  24. export function loadBackendBaseUrl(): string {
  25. try {
  26. const stored = wx.getStorageSync(BACKEND_BASE_URL_STORAGE_KEY)
  27. const normalized = normalizeBackendBaseUrl(stored)
  28. if (normalized !== stored && normalized === DEFAULT_BACKEND_BASE_URL) {
  29. wx.setStorageSync(BACKEND_BASE_URL_STORAGE_KEY, normalized)
  30. }
  31. return normalized
  32. } catch {
  33. return DEFAULT_BACKEND_BASE_URL
  34. }
  35. }
  36. export function saveBackendBaseUrl(baseUrl: string): string {
  37. const normalized = normalizeBackendBaseUrl(baseUrl)
  38. try {
  39. wx.setStorageSync(BACKEND_BASE_URL_STORAGE_KEY, normalized)
  40. } catch {}
  41. return normalized
  42. }
  43. export function loadBackendAuthTokens(): BackendAuthTokens | null {
  44. try {
  45. const stored = wx.getStorageSync(BACKEND_AUTH_TOKENS_STORAGE_KEY)
  46. if (!stored || typeof stored !== 'object') {
  47. return null
  48. }
  49. const accessToken = normalizeString((stored as Record<string, unknown>).accessToken)
  50. const refreshToken = normalizeString((stored as Record<string, unknown>).refreshToken)
  51. if (!accessToken || !refreshToken) {
  52. return null
  53. }
  54. return {
  55. accessToken,
  56. refreshToken,
  57. }
  58. } catch {
  59. return null
  60. }
  61. }
  62. export function saveBackendAuthTokens(tokens: BackendAuthTokens): BackendAuthTokens {
  63. const normalized = {
  64. accessToken: normalizeString(tokens.accessToken),
  65. refreshToken: normalizeString(tokens.refreshToken),
  66. }
  67. try {
  68. wx.setStorageSync(BACKEND_AUTH_TOKENS_STORAGE_KEY, normalized)
  69. } catch {}
  70. return normalized
  71. }
  72. export function clearBackendAuthTokens() {
  73. try {
  74. wx.removeStorageSync(BACKEND_AUTH_TOKENS_STORAGE_KEY)
  75. } catch {}
  76. }