refactor: improve tenant slug handling in OAuth callback processing

- Renamed variable for clarity and added sanitization for tenant slug derived from state.
- Updated target host resolution to prioritize tenant slug from state if not explicitly provided.

Signed-off-by: Innei <tukon479@gmail.com>
This commit is contained in:
Innei
2025-11-30 14:24:42 +08:00
parent ac106b87c6
commit 8f0e9e7fd7

View File

@@ -46,7 +46,8 @@ callbackRouter.all('/:provider', (c) => {
requestUrl.searchParams.set('gatewayState', originalStateParam)
}
const tenantSlugFromState = decodedState?.tenantSlug ?? null
const rawTenantSlugFromState = decodedState?.tenantSlug ?? null
const tenantSlugFromState = sanitizeTenantSlug(rawTenantSlugFromState ?? undefined) ?? rawTenantSlugFromState
const tenantSlug = sanitizeTenantSlug(tenantSlugParam ?? tenantSlugFromState ?? undefined)
const explicitHostFromState = sanitizeExplicitHost(decodedState?.targetHost)
const explicitHost = sanitizeExplicitHost(explicitHostParam) ?? explicitHostFromState
@@ -67,7 +68,10 @@ callbackRouter.all('/:provider', (c) => {
return c.json({ error: 'invalid_host', message: 'Target host is invalid.' }, 400)
}
const targetHost = resolveTargetHost(gatewayConfig, { tenantSlug, explicitHost })
const targetHost = resolveTargetHost(gatewayConfig, {
tenantSlug: tenantSlug ?? tenantSlugFromState,
explicitHost,
})
if (!targetHost) {
return c.json({ error: 'unresolvable_host', message: 'Unable to resolve target tenant host.' }, 400)
}