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

const secret_key = await prepareSecretKey();

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