summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/db/seed.ts1
-rw-r--r--src/lib/hooks/useCookie.ts33
-rw-r--r--src/lib/server/cookie.ts47
-rw-r--r--src/lib/server/cookiebridge.ts56
-rw-r--r--src/lib/server/setcookie.ts11
5 files changed, 54 insertions, 94 deletions
diff --git a/src/lib/db/seed.ts b/src/lib/db/seed.ts
index a196b6a..6c2a9f7 100644
--- a/src/lib/db/seed.ts
+++ b/src/lib/db/seed.ts
@@ -3,7 +3,6 @@ import { getStressedSyllable, getSyllableCount } from "../utils";
import useful from "@/lib/useful_thai.json";
import db from ".";
import pdb from "./prosodydb";
-import * as Sorsyl from "sorsyl";
import { findLemma } from "../calls/nlp";
const SYMBOL_REGEX = new RegExp(/[\W\d]/);
diff --git a/src/lib/hooks/useCookie.ts b/src/lib/hooks/useCookie.ts
index 904738a..cb3a019 100644
--- a/src/lib/hooks/useCookie.ts
+++ b/src/lib/hooks/useCookie.ts
@@ -1,35 +1,12 @@
import { getContext } from "waku/middleware/context";
-import { mergeSetCookies } from "./setcookie";
+
+// This file appears to be unused - all cookie functionality is now in cookiebridge.ts
+// Left as a placeholder in case it's referenced elsewhere
const useCookies = () => {
const ctx = getContext();
- console.log(ctx.req, "cookie bridge");
- const headers = ctx.req.headers;
- console.log({ headers });
- return "hi";
-
- // const headerObj = ctx.headers || {};
- // headerObj["set-cookie"] = mergeSetCookies(
- // headerObj["set-cookie"] || [],
- // (ctx.cookies || []) as ResponseCookie[],
- // );
- // const headers = new Headers(headerObj as Record<string, string>);
- // const reqCookies = new RequestCookies(headers);
- // const resCookies = new ResponseCookies(headers);
-
- // const getCookie: ResponseCookies["get"] = (...args) =>
- // resCookies.get(...args) || reqCookies.get(...args);
- // const setCookie: ResponseCookies["set"] = (...args) => {
- // const updated = resCookies.set(...args);
- // ctx.cookies = updated.getAll();
- // return updated;
- // };
- // const delCookie: ResponseCookies["delete"] = (...args) => {
- // const updated = resCookies.delete(...args);
- // ctx.cookies = updated.getAll();
- // return updated;
- // };
- // return { getCookie, setCookie, delCookie };
+ console.log("WARNING: useCookie.ts is deprecated, use cookiebridge.ts instead");
+ return "DEPRECATED";
};
export { useCookies };
diff --git a/src/lib/server/cookie.ts b/src/lib/server/cookie.ts
index 9a7e632..32894b9 100644
--- a/src/lib/server/cookie.ts
+++ b/src/lib/server/cookie.ts
@@ -1,41 +1,36 @@
-import { getHonoContext } from "waku/unstable_hono";
import cookie from "cookie";
import db from "../db";
-
import type { Middleware } from "waku/config";
const cookieMiddleware: Middleware = () => {
- console.log("cookieMiddleware executed");
return async (ctx, next) => {
+ // Parse incoming cookies
const cookies = cookie.parse(ctx.req.headers.cookie || "");
const coki = cookies.sorlang;
- // if (!coki) {
- // if (ctx.req.url.pathname === "/login") return await next();
- // ctx.res.status = 301;
- // ctx.res.headers = {
- // Location: "/login",
- // };
- // }
+
+ // If cookie exists, fetch user data and set in context
if (coki) {
const userRow = db.fetchCookie(coki);
- // console.log({ userRow });
- if (userRow) ctx.data.user = { id: userRow.id, name: userRow.name };
- // else {
- // if (ctx.req.url.pathname === "/login") return await next();
- // ctx.res.status = 301;
- // ctx.res.headers = {
- // Location: "/login",
- // };
- // }
+ if (userRow) {
+ ctx.data.user = { id: userRow.id, name: userRow.name };
+ console.log("User authenticated:", userRow.name);
+ }
+ }
+
+ // Uncomment to enable redirection for unauthenticated users
+ /*
+ if (!ctx.data.user && ctx.req.url.pathname !== "/login") {
+ ctx.res.status = 302;
+ ctx.res.headers = {
+ Location: "/login",
+ };
+ return;
}
+ */
+
await next();
- const hctx: any = getHonoContext();
- // console.log("hono", hctx.lol);
- // console.log("ctx coki", ctx.data.cookie);
- ctx.res.headers ||= {};
- if (ctx.data.cookie)
- ctx.res.headers["set-cookie"] = ctx.data.cookie as string;
- ctx.res.headers["set-lmao"] = "wtf man";
+
+ // Cookie setting is now handled by setCookieMiddleware
};
};
diff --git a/src/lib/server/cookiebridge.ts b/src/lib/server/cookiebridge.ts
index 778fc2c..613479b 100644
--- a/src/lib/server/cookiebridge.ts
+++ b/src/lib/server/cookiebridge.ts
@@ -1,52 +1,32 @@
import { getContext, getContextData } from "waku/middleware/context";
+import cookie from "cookie";
const useCookies = () => {
const ctx = getContext();
const headers = ctx.req.headers;
- console.log(headers.cookie);
-
- const getCookie = (s: string) => {
- const coki = headers.cookie;
- if (!coki) return {};
- const cokiMap = parseCoki(coki);
- return cokiMap;
+
+ const getCookie = (name: string) => {
+ const cookieHeader = headers.cookie;
+ if (!cookieHeader) return null;
+
+ const cookies = cookie.parse(cookieHeader);
+ return cookies[name];
};
- const setCookie = (s: string) => {
+
+ const setCookie = (value: string) => {
const ctxdata = getContextData();
- // (ctxdata.cokimap as Record<string, string>).sorlang = s;
- // ctxdata.cookie = `sorlang=${s}; Secure`
- ctxdata.cookie = `sorlang=${s};`;
+ // Set cookie with proper attributes for security and functionality
+ ctxdata.cookie = `sorlang=${value}; Path=/; HttpOnly; SameSite=Lax; Max-Age=2592000`;
+ console.log("Cookie value being set:", value);
};
- const delCookie = (s: string) => {
+
+ const delCookie = (name: string) => {
const ctxdata = getContextData();
- delete (ctxdata.cokimap as Record<string, string>).sorlang;
+ // Set an expired cookie to delete it
+ ctxdata.cookie = `${name}=; Path=/; HttpOnly; SameSite=Lax; Max-Age=0; Expires=Thu, 01 Jan 1970 00:00:00 GMT`;
};
+
return { getCookie, setCookie, delCookie };
};
export { useCookies };
-
-function parseCoki(s: string) {
- return s
- .split(";")
- .map((v) => v.split("="))
- .reduce((acc: Record<string, string>, v: any) => {
- acc[decodeURIComponent(v[0].trim())] = decodeURIComponent(v[1].trim());
- return acc;
- }, {});
-}
-function parseSetCoki(s: string) {
- return s
- .split(";")
- .map((v) => v.split("="))
- .reduce((acc: Record<string, string>, v: any) => {
- acc[decodeURIComponent(v[0].trim())] = decodeURIComponent(v[1].trim());
- return acc;
- }, {});
-}
-function cokiToString(m: Record<string, string>): string {
- return Object.entries(m).reduce((acc: string, item: [string, string]) => {
- const [key, val] = item;
- return `${acc} ${key}=${val};`;
- }, "");
-}
diff --git a/src/lib/server/setcookie.ts b/src/lib/server/setcookie.ts
index 61da128..10ca489 100644
--- a/src/lib/server/setcookie.ts
+++ b/src/lib/server/setcookie.ts
@@ -3,8 +3,17 @@ import type { Middleware } from "waku/config";
const setCookieMiddleware: Middleware = () => {
return async (ctx, next) => {
await next();
+
+ // Ensure headers object exists
ctx.res.headers ||= {};
- ctx.res.headers["set-cookie"] = ctx.data.cookie as string;
+
+ // Only set the cookie header if we have a cookie to set
+ if (ctx.data.cookie) {
+ ctx.res.headers["set-cookie"] = ctx.data.cookie as string;
+
+ // Debugging
+ console.log("Setting cookie header:", ctx.data.cookie);
+ }
};
};