import type { NextFunction, Request, Response } from "express";

import { initFirebase } from "../config/firebase.js";

export const requireAuth = async (req: Request, res: Response, next: NextFunction) => {
  const header = req.headers.authorization || "";
  const [, token] = header.split(" ");

  if (!token) {
    return res.status(401).json({ error: "unauthorized" });
  }

  try {
    const admin = initFirebase();
    const decoded = await admin.auth().verifyIdToken(token);

    req.user = {
      uid: decoded.uid,
      email: decoded.email,
    };

    return next();
  } catch (error) {
    return res.status(401).json({ error: "unauthorized" });
  }
};
