Role-based Authorization API

Role-based authorization restricts actions based on user role.

Example roles:

Requirement

Only admins can delete users:

DELETE /users/:id

Middleware

function requireRole(...allowedRoles) {
  return function (req, res, next) {
    if (!allowedRoles.includes(req.user.role)) {
      return res.status(403).json({ error: 'Forbidden' })
    }

    next()
  }
}

Usage:

app.delete('/users/:id', requireAuth, requireRole('admin'), deleteUser)

Test cases

Test:

Interview angle

Explain that authentication must run before authorization. Authentication sets req.user; authorization checks whether that user has the required role or permission.