fix(auth): issue local sessions for user billing web login (#1863)

This commit is contained in:
Lyon
2026-06-22 09:19:24 +08:00
committed by GitHub
parent d32ea3bece
commit 85c135d18a
+12 -4
View File
@@ -943,13 +943,21 @@ class AccessController {
valuesRedacted: login.valuesRedacted
};
}
const token = textOr(login.body.token, "");
const auth = await this.authenticateUserBillingToken(token);
const upstreamToken = textOr(login.body.token, "");
const auth = await this.authenticateUserBillingToken(upstreamToken);
if (!auth.ok) {
return { ok: false, status: auth.status, error: auth.error };
}
setSessionCookie(response, token, SESSION_MAX_AGE_SECONDS, request, this.env);
return { ok: true, auth, token, status: login.status, retryCount: login.retryCount, transientObserved: login.transientObserved };
const localSession = await this.issueWebSessionForActor(auth.actor);
const localAuth = {
ok: true,
actor: auth.actor,
session: publicSession({ ...localSession.session, user: auth.actor }),
authMethod: AUTH_METHOD_WEB_SESSION,
userBilling: auth.userBilling ? { active: true, principal: auth.userBilling.principal, valuesRedacted: true } : undefined
};
setSessionCookie(response, localSession.token, SESSION_MAX_AGE_SECONDS, request, this.env);
return { ok: true, auth: localAuth, token: localSession.token, upstreamTokenPrefix: redactedTokenPrefix(upstreamToken), status: login.status, retryCount: login.retryCount, transientObserved: login.transientObserved, valuesRedacted: true };
} catch (error) {
thrownCode = textOr(error?.code, "user_billing_login_exception");
throw error;