feat: append auth token to purchase iframe url

This commit is contained in:
erio
2026-02-28 16:02:55 +08:00
parent 9230d3cbc9
commit c37c68a341
2 changed files with 15 additions and 3 deletions

View File

@@ -1 +1 @@
0.1.87.4 0.1.87.5

View File

@@ -80,6 +80,7 @@ const appStore = useAppStore()
const authStore = useAuthStore() const authStore = useAuthStore()
const PURCHASE_USER_ID_QUERY_KEY = 'user_id' const PURCHASE_USER_ID_QUERY_KEY = 'user_id'
const PURCHASE_AUTH_TOKEN_QUERY_KEY = 'token'
const PURCHASE_THEME_QUERY_KEY = 'theme' const PURCHASE_THEME_QUERY_KEY = 'theme'
const PURCHASE_UI_MODE_QUERY_KEY = 'ui_mode' const PURCHASE_UI_MODE_QUERY_KEY = 'ui_mode'
const PURCHASE_UI_MODE_EMBEDDED = 'embedded' const PURCHASE_UI_MODE_EMBEDDED = 'embedded'
@@ -97,13 +98,21 @@ function detectTheme(): 'light' | 'dark' {
return document.documentElement.classList.contains('dark') ? 'dark' : 'light' return document.documentElement.classList.contains('dark') ? 'dark' : 'light'
} }
function buildPurchaseUrl(baseUrl: string, userId?: number, theme: 'light' | 'dark' = 'light'): string { function buildPurchaseUrl(
baseUrl: string,
userId?: number,
authToken?: string | null,
theme: 'light' | 'dark' = 'light',
): string {
if (!baseUrl) return baseUrl if (!baseUrl) return baseUrl
try { try {
const url = new URL(baseUrl) const url = new URL(baseUrl)
if (userId) { if (userId) {
url.searchParams.set(PURCHASE_USER_ID_QUERY_KEY, String(userId)) url.searchParams.set(PURCHASE_USER_ID_QUERY_KEY, String(userId))
} }
if (authToken) {
url.searchParams.set(PURCHASE_AUTH_TOKEN_QUERY_KEY, authToken)
}
url.searchParams.set(PURCHASE_THEME_QUERY_KEY, theme) url.searchParams.set(PURCHASE_THEME_QUERY_KEY, theme)
url.searchParams.set(PURCHASE_UI_MODE_QUERY_KEY, PURCHASE_UI_MODE_EMBEDDED) url.searchParams.set(PURCHASE_UI_MODE_QUERY_KEY, PURCHASE_UI_MODE_EMBEDDED)
return url.toString() return url.toString()
@@ -112,6 +121,9 @@ function buildPurchaseUrl(baseUrl: string, userId?: number, theme: 'light' | 'da
if (userId) { if (userId) {
params.push(`${PURCHASE_USER_ID_QUERY_KEY}=${encodeURIComponent(String(userId))}`) params.push(`${PURCHASE_USER_ID_QUERY_KEY}=${encodeURIComponent(String(userId))}`)
} }
if (authToken) {
params.push(`${PURCHASE_AUTH_TOKEN_QUERY_KEY}=${encodeURIComponent(authToken)}`)
}
params.push(`${PURCHASE_THEME_QUERY_KEY}=${encodeURIComponent(theme)}`) params.push(`${PURCHASE_THEME_QUERY_KEY}=${encodeURIComponent(theme)}`)
params.push(`${PURCHASE_UI_MODE_QUERY_KEY}=${encodeURIComponent(PURCHASE_UI_MODE_EMBEDDED)}`) params.push(`${PURCHASE_UI_MODE_QUERY_KEY}=${encodeURIComponent(PURCHASE_UI_MODE_EMBEDDED)}`)
const separator = baseUrl.includes('?') ? '&' : '?' const separator = baseUrl.includes('?') ? '&' : '?'
@@ -121,7 +133,7 @@ function buildPurchaseUrl(baseUrl: string, userId?: number, theme: 'light' | 'da
const purchaseUrl = computed(() => { const purchaseUrl = computed(() => {
const baseUrl = (appStore.cachedPublicSettings?.purchase_subscription_url || '').trim() const baseUrl = (appStore.cachedPublicSettings?.purchase_subscription_url || '').trim()
return buildPurchaseUrl(baseUrl, authStore.user?.id, purchaseTheme.value) return buildPurchaseUrl(baseUrl, authStore.user?.id, authStore.token, purchaseTheme.value)
}) })
const isValidUrl = computed(() => { const isValidUrl = computed(() => {