From 7743fa98b995e28778f7eb8afc4622cfffd19db3 Mon Sep 17 00:00:00 2001 From: Alec Armbruster <35377827+alectrocute@users.noreply.github.com> Date: Fri, 30 Jun 2023 10:04:01 -0400 Subject: [PATCH] wip --- src/server/middleware.ts | 19 +++++++------------ src/server/utils/has-jwt-cookie.ts | 6 ++++++ src/server/utils/is-request-authenticated.ts | 9 --------- 3 files changed, 13 insertions(+), 21 deletions(-) create mode 100644 src/server/utils/has-jwt-cookie.ts delete mode 100644 src/server/utils/is-request-authenticated.ts diff --git a/src/server/middleware.ts b/src/server/middleware.ts index 7505d650..24ae1b95 100644 --- a/src/server/middleware.ts +++ b/src/server/middleware.ts @@ -1,5 +1,5 @@ import type { NextFunction, Request, Response } from "express"; -import { isRequestAuthenticated } from "./utils/is-request-authenticated"; +import { hasJwtCookie } from "./utils/has-jwt-cookie"; export function setDefaultCsp({ res, @@ -22,18 +22,13 @@ export function setDefaultCsp({ // interval is rather arbitrary and could be set higher (less server load) or lower (fresher data). // // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control -export function setCacheControl({ - res, - req, - next, -}: { - res: Response; - req: Request; - next: NextFunction; -}) { +export function setCacheControl( + req: Request, + res: Response, + next: NextFunction +) { let caching: string; - // Avoid any sort of caching in development if (process.env.NODE_ENV !== "production") { return next(); } @@ -45,7 +40,7 @@ export function setCacheControl({ // Static content gets cached publicly for a day caching = "public, max-age=86400"; } else { - if (isRequestAuthenticated(req)) { + if (hasJwtCookie(req)) { caching = "private"; } else { caching = "public, max-age=5"; diff --git a/src/server/utils/has-jwt-cookie.ts b/src/server/utils/has-jwt-cookie.ts new file mode 100644 index 00000000..ea558ffa --- /dev/null +++ b/src/server/utils/has-jwt-cookie.ts @@ -0,0 +1,6 @@ +import * as cookie from "cookie"; +import type { Request } from "express"; + +export function hasJwtCookie(req: Request): boolean { + return Boolean(cookie.parse(req.headers.cookie ?? "").jwt?.length); +} diff --git a/src/server/utils/is-request-authenticated.ts b/src/server/utils/is-request-authenticated.ts deleted file mode 100644 index 7b9fb224..00000000 --- a/src/server/utils/is-request-authenticated.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type { Request } from "express"; - -export function isRequestAuthenticated(req: Request): boolean { - if (!req.headers.cookie) { - return false; - } - - return req.headers.cookie?.split("; ").some(c => c.startsWith("jwt")); -}