diff options
Diffstat (limited to 'src/lib/server/cookie.ts')
-rw-r--r-- | src/lib/server/cookie.ts | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/lib/server/cookie.ts b/src/lib/server/cookie.ts new file mode 100644 index 0000000..fadac9d --- /dev/null +++ b/src/lib/server/cookie.ts @@ -0,0 +1,47 @@ +import { + getCookie, + getSignedCookie, + setCookie, + setSignedCookie, + deleteCookie, +} from "hono/cookie"; +import cookie from "cookie"; +// console.log("db module path:", "@/lib/db"); +// console.log( +// "globalThis.__WAKU_MIDDLEWARE_CONTEXT_STORAGE__:", +// globalThis.__WAKU_MIDDLEWARE_CONTEXT_STORAGE__, +// ); +import db from "../db"; + +import type { Middleware } from "waku/config"; + +// XXX we would probably like to extend config. + +const cookieMiddleware: Middleware = () => { + console.log("cookieMiddleware executed"); + return async (ctx, next) => { + if (ctx.req.url.pathname === "/login") return await next(); + const cookies = cookie.parse(ctx.req.headers.cookie || ""); + console.log({ cookies }); + const coki = cookies.sorlang; + if (!coki) { + ctx.res.status = 301; + ctx.res.headers = { + Location: "/login", + }; + } + if (coki) { + const userRow = db.fetchCookie(coki); + if (userRow) ctx.data.user = { id: userRow.id, name: userRow.name }; + else { + ctx.res.status = 301; + ctx.res.headers = { + Location: "/login", + }; + } + } + await next(); + }; +}; + +export default cookieMiddleware; |