import jwt from "jsonwebtoken";
import { getEnv } from "@/lib/env";

export type SessionTokenPayload = {
  userId: string;
  email: string;
};

function getSessionSecret() {
  return getEnv().JWT_SECRET;
}

export function signSessionToken(payload: SessionTokenPayload) {
  return jwt.sign(payload, getSessionSecret(), { expiresIn: "7d" });
}

export function verifySessionToken(token: string) {
  try {
    const payload = jwt.verify(token, getSessionSecret());

    if (typeof payload === "string" || !payload || typeof payload !== "object") {
      return null;
    }

    const { userId, email } = payload as jwt.JwtPayload & SessionTokenPayload;

    if (typeof userId !== "string" || typeof email !== "string") {
      return null;
    }

    return { userId, email };
  } catch {
    return null;
  }
}
