import { ForbiddenError } from '../../utils/errors.js';

/**
 * Middleware na overenie role používateľa
 * Musí byť použité PO authenticate middleware
 * @param  {...string} allowedRoles - Povolené role (napr. 'admin', 'member')
 */
export const requireRole = (...allowedRoles) => {
  return (req, res, next) => {
    // Skontroluj či je user autentifikovaný
    if (!req.user) {
      return res.status(401).json({
        success: false,
        error: {
          message: 'Musíte byť prihlásený',
          statusCode: 401,
        },
      });
    }

    // Skontroluj či user má jednu z povolených rolí
    if (!allowedRoles.includes(req.user.role)) {
      return res.status(403).json({
        success: false,
        error: {
          message: 'Nemáte oprávnenie na túto operáciu',
          statusCode: 403,
        },
      });
    }

    next();
  };
};

/**
 * Middleware špecificky pre admin rolu
 */
export const requireAdmin = requireRole('admin');

/**
 * Middleware pre admin alebo team_leader rolu
 */
export const requireTeamLeaderOrAdmin = requireRole('admin', 'team_leader');
