@adonisjs-community/girouette
Version:
An AdonisJS package allowing decorators-based routing.
29 lines (28 loc) • 810 B
JavaScript
import { REFLECT_ROUTES_KEY } from '../constants.js';
/**
* The RouteMiddleware decorator applies middleware to a specific route.
*
* @param middleware Middleware to apply to the route
*
* @example
* ```ts
* @Get('/profile')
* @RouteMiddleware([middleware.auth()])
* async show() {
* // Protected by auth middleware
* }
* ```
*/
export const RouteMiddleware = (middleware) => {
return (target, key) => {
const routes = Reflect.getMetadata(REFLECT_ROUTES_KEY, target.constructor) || {};
if (!routes[key]) {
routes[key] = {};
}
if (!routes[key].middleware) {
routes[key].middleware = [];
}
routes[key].middleware.push(middleware);
Reflect.defineMetadata(REFLECT_ROUTES_KEY, routes, target.constructor);
};
};