/**
 * CORS Middleware - Whitelist alapú origin ellenőrzéssel
 * 
 * Csak az engedélyezett origin-ekről érkező kéréseket fogadjuk el.
 */

const allowedOrigins = (process.env.ALLOWED_ORIGINS || 'http://localhost:3000')
  .split(',')
  .map(origin => origin.trim());

console.log('🔒 CORS allowed origins:', allowedOrigins);

export function corsMiddleware(req, res, next) {
  const origin = req.headers.origin;

  // Ellenőrizzük hogy az origin engedélyezett-e
  if (origin && allowedOrigins.includes(origin)) {
    // Engedélyezett origin
    res.setHeader('Access-Control-Allow-Origin', origin);
    res.setHeader('Access-Control-Allow-Credentials', 'true');
    res.setHeader(
      'Access-Control-Allow-Methods',
      'GET, POST, PUT, DELETE, PATCH, OPTIONS'
    );
    res.setHeader(
      'Access-Control-Allow-Headers',
      'Content-Type, Authorization, Cookie'
    );
    res.setHeader(
      'Access-Control-Expose-Headers',
      'Set-Cookie'
    );
  }

  // Preflight request kezelése (OPTIONS)
  if (req.method === 'OPTIONS') {
    return res.status(204).end();
  }

  next();
}

/**
 * Strict CORS check - ha az origin nem engedélyezett, visszautasítjuk
 */
export function strictCorsCheck(req, res, next) {
  const origin = req.headers.origin;

  // Ha van origin header de nincs az engedélyezett listában
  if (origin && !allowedOrigins.includes(origin)) {
    return res.status(403).json({
      success: false,
      error: 'CORS policy: Origin not allowed'
    });
  }

  next();
}
