Skip to main content
zerotal

Documentation


Documentation / zerotal / auth / RequireRoleMiddleware

Class: RequireRoleMiddleware

Defined in: packages/auth/src/roles/RequireRoleMiddleware.ts:23

RequireRoleMiddleware — assert the authenticated user has one or more roles.

Reads roles straight off the authenticated user via the relational Roles mixin (user.hasRole(...)). The user model must be composed with Roles; if it exposes no hasRole, the request is forbidden.

Throws UnauthorizedError (401) when the request is unauthenticated. Throws ForbiddenError (403) when the user lacks the required role(s).

Example

// Single role:
Router.get('/admin', AdminController, 'index', [new RequireRoleMiddleware('admin')]);

// Any of several roles (OR semantics):
Router.get('/dashboard', DashboardController, 'index', [
  new RequireRoleMiddleware('admin', 'editor'),
]);

Extends

Constructors

Constructor

new RequireRoleMiddleware(...roles): RequireRoleMiddleware

Defined in: packages/auth/src/roles/RequireRoleMiddleware.ts:28

Parameters

roles

...string[]

Returns

RequireRoleMiddleware

Overrides

BaseMiddleware.constructor

Properties

options

protected options: object = {}

Defined in: packages/auth/src/roles/RequireRoleMiddleware.ts:24

Subclasses must declare this with their default option values. TypeScript enforces this at compile time — forgetting it is a type error.

Overrides

BaseMiddleware.options

Methods

for()

static for(...roles): RequireRoleMiddleware

Defined in: packages/auth/src/roles/RequireRoleMiddleware.ts:35

Fluent factory alias: RequireRoleMiddleware.for('admin', 'editor')

Parameters

roles

...string[]

Returns

RequireRoleMiddleware


handle()

handle(http, next): Promise<void | Response>

Defined in: packages/auth/src/roles/RequireRoleMiddleware.ts:39

Parameters

http

HttpContext

next

NextFn

Returns

Promise<void | Response>

Overrides

BaseMiddleware.handle


with()

static with<T, Opts>(this, options): () => InstanceType<T>

Defined in: packages/core/src/middleware/BaseMiddleware.ts:48

Returns a zero-arg subclass with the given options deep-merged on top of the subclass defaults, usable directly in app.use([...]).

Type Parameters

T

T extends (...args) => BaseMiddleware<any>

Opts

Opts = T extends (...args) => BaseMiddleware<U> ? U : object

Parameters

this

T

options

Partial<Opts>

Returns

() => InstanceType<T>

Inherited from

BaseMiddleware.with


afterResponse()?

optional afterResponse(ctx): Promise<void>

Defined in: packages/core/src/middleware/BaseMiddleware.ts:70

Parameters

ctx

HttpContext

Returns

Promise<void>

Inherited from

BaseMiddleware.afterResponse


onError()?

optional onError(ctx, error): Promise<void>

Defined in: packages/core/src/middleware/BaseMiddleware.ts:71

Parameters

ctx

HttpContext

error

Error

Returns

Promise<void>

Inherited from

BaseMiddleware.onError