From: Alec Armbruster <35377827+alectrocute@users.noreply.github.com> Date: Fri, 30 Jun 2023 14:04:01 +0000 (-0400) Subject: wip X-Git-Url: http://these/git/%7B%24%7B%60data:application/static/%7Bthis.state.postForm.url%7D?a=commitdiff_plain;h=7743fa98b995e28778f7eb8afc4622cfffd19db3;p=lemmy-ui.git wip --- diff --git a/src/server/middleware.ts b/src/server/middleware.ts index 7505d65..24ae1b9 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 0000000..ea558ff --- /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 7b9fb22..0000000 --- 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")); -}