// FILE: src/middleware/authJwt.js
// 03.2 4) เพิ่ม middleware authJwt (ใหม่)
// นำ middleware นี้ไปใส่ หลัง verify JWT เสมอ เช่น app.use('/api', authJwt(), routes)
// Simple JWT authentication middleware example
// - For demonstration or simple use cases
// - Not as feature-rich as auth.js (no role/permission enrichment)
// - Can be used standalone or alongside auth.js
// authJwt.js – สมมติคุณมี JWT อยู่แล้ว (ปรับ verify ตามที่ใช้จริง)
// - ตรวจ token และเติม req.user
// - ไม่ได้เติม roles/permissions (ถ้าต้องการให้ใช้ auth.js แทนหรือร่วมกัน)

import jwt from "jsonwebtoken";

export function authJwt() {
  const { JWT_SECRET = "dev-secret" } = process.env;
  return (req, res, next) => {
    const h = req.headers.authorization || "";
    // const token = h.startsWith("Bearer ") ? h.slice(7) : null;
    const m = /^Bearer\s+(.+)$/i.exec(h || "");
    //if (!token) return res.status(401).json({ error: "Unauthenticated" });
    if (!m) return res.status(401).json({ error: "Unauthenticated" });
    try {
      //const payload = jwt.verify(token, JWT_SECRET);
      const payload = jwt.verify(m[1], JWT_SECRET, { issuer: "dms-backend" });
      // แนบข้อมูลขั้นต่ำให้ middleware ถัดไป
      req.auth = { user_id: payload.user_id, username: payload.username };
      //req.user = { user_id: payload.user_id, username: payload.username };
      // เผื่อโค้ดเก่าอ้างอิง req.user
      req.user = req.user || {};
      req.user.user_id = payload.user_id;
      req.user.username = payload.username;
      next();
    } catch (e) {
      return res.status(401).json({ error: "Unauthenticated" });
    }
  };
}
