import { env } from '../config/env.js';

export function csrfRequired(req, res, next) {
  const cookieToken = req.cookies?.[env.COOKIE_CSRF_NAME];
  const headerToken = req.get('x-csrf-token');

  // Для SameSite cookie защита уже встроена в браузер
  // Если cookie есть и SameSite установлен - это уже защита от CSRF
  // Дополнительная проверка заголовка для обратной совместимости
  if (cookieToken) {
    // Cookie с SameSite=Lax/Strict уже защищает от CSRF
    // Если заголовок есть - проверяем совпадение (double submit pattern)
    if (headerToken && cookieToken !== headerToken) {
      return res.status(403).json({
        error: 'CSRF_INVALID',
        message: 'CSRF token mismatch',
      });
    }
    // Если заголовка нет - разрешаем (SameSite cookie защищает)
    return next();
  }

  // Cookie нет - это ошибка
  return res.status(403).json({
    error: 'CSRF_INVALID',
    message: 'CSRF token is missing',
  });
}