diff --git a/new-functions/src/index.ts b/new-functions/src/index.ts index b9d0d27..bb95b28 100644 --- a/new-functions/src/index.ts +++ b/new-functions/src/index.ts @@ -1,35 +1,16 @@ import { Hono } from "hono"; import { cors } from "hono/cors"; -import { createMiddleware } from "hono/factory"; -import type { LingdocsUser } from "../../website/src/types/account-types"; +import { authMiddleware } from "./middleware/lingdocs-auth"; const app = new Hono(); app.use(cors()); -const authMiddleware = createMiddleware<{ - Variables: { - user: LingdocsUser; - }; -}>(async (c, next) => { - const cookie = c.req.header("Cookie") || ""; - const r = await fetch("https://account.lingdocs.com/api/user", { - headers: { cookie }, - }); - const res = (await r.json()) as { ok: boolean; user: LingdocsUser }; - if (res.ok) { - c.set("user", res.user); - } - await next(); -}); - -app.use(authMiddleware); - app.get("/", (c) => { // c.env.LINGDOCS_COUCHDB return c.text("Hi from hono updated"); }); -app.get("/wa", async (c) => { +app.get("/wa", authMiddleware, async (c) => { return c.json({ user: c.var.user }); }); diff --git a/new-functions/src/middleware/lingdocs-auth.ts b/new-functions/src/middleware/lingdocs-auth.ts new file mode 100644 index 0000000..ed913f5 --- /dev/null +++ b/new-functions/src/middleware/lingdocs-auth.ts @@ -0,0 +1,20 @@ +import { createMiddleware } from "hono/factory"; +import type { LingdocsUser } from "../../../website/src/types/account-types"; + +export const authMiddleware = createMiddleware<{ + Variables: { + user: LingdocsUser | undefined; + }; +}>(async (c, next) => { + const cookie = c.req.header("Cookie") || ""; + const r = await fetch("https://account.lingdocs.com/api/user", { + headers: { cookie }, + }); + const res = (await r.json()) as { ok: boolean; user: LingdocsUser }; + if (res.ok) { + c.set("user", res.user); + } else { + c.set("user", undefined); + } + await next(); +});