chore: Use httpOnly authentication cookie (#5552)

This commit is contained in:
Tom Moor
2023-07-15 16:56:32 -04:00
committed by GitHub
parent b1230d0c81
commit 39e12cef65
16 changed files with 114 additions and 120 deletions

View File

@@ -118,9 +118,8 @@ export async function signIn(
);
}
} else {
ctx.cookies.set("accessToken", user.getJwtToken(), {
ctx.cookies.set("accessToken", user.getJwtToken(expires), {
sameSite: "lax",
httpOnly: false,
expires,
});

View File

@@ -20,10 +20,13 @@ function getJWTPayload(token: string) {
}
}
export async function getUserForJWT(token: string): Promise<User> {
export async function getUserForJWT(
token: string,
allowedTypes = ["session", "transfer"]
): Promise<User> {
const payload = getJWTPayload(token);
if (payload.type === "email-signin") {
if (!allowedTypes.includes(payload.type)) {
throw AuthenticationError("Invalid token");
}

View File

@@ -27,7 +27,6 @@ export class StateStore {
const state = buildState(host, token, client);
ctx.cookies.set(this.key, state, {
httpOnly: false,
expires: addMinutes(new Date(), 10),
domain: getCookieDomain(ctx.hostname),
});
@@ -54,7 +53,6 @@ export class StateStore {
// Destroy the one-time pad token and ensure it matches
ctx.cookies.set(this.key, "", {
httpOnly: false,
expires: subMinutes(new Date(), 1),
domain: getCookieDomain(ctx.hostname),
});