import {
  MiddlewareHandlerContext,
} from "$fresh/server.ts";
import { getCookies } from "http/cookie.ts";
import { verify } from "djwt";
import { prepareSecretKey } from "../util/secret.ts";

export const handler = async (
  req: Request,
  ctx: MiddlewareHandlerContext<Record<string, unknown>>,
) => {
  const secret_key = await prepareSecretKey();
  const cookies = getCookies(req.headers);
  const jwt = cookies["auth"];
  try {
    const payload = await verify(jwt, secret_key);
    ctx.state["login"] = payload;
  } catch (_) {
    ctx.state["login"] = null;
  }
  return await ctx.next();
};
