fix(auth): issue local sessions for user billing web login (#1863)
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user