Q43: How do you write a configurable middleware factory in Express?

Difficulty:MediumTopic:Middleware Patterns

A middleware factory is a higher-order function that accepts configuration options and returns a standard Express middleware function (req, res, next).

Configurable Middleware Factory Pattern
// Middleware Factory
const roleGuard = (allowedRoles) => {
  return (req, res, next) => {
    if (!req.user || !allowedRoles.includes(req.user.role)) {
      return res.status(403).json({ error: 'Permission denied' });
    }
    next();
  };
};

// Usage in routes
app.delete('/user/:id', roleGuard(['ADMIN', 'SUPERUSER']), handleDelete);
💡 Factory functions accept runtime options and return customized middleware callbacks.
Key Takeaways
  • Configurable middleware functions return standard (req, res, next) closures.
  • Enables reusable, parameterized authorization checks across route definitions.