@adonisjs-community/girouette
Version:
An AdonisJS package allowing decorators-based routing.
32 lines (31 loc) • 1.09 kB
JavaScript
import { REFLECT_RESOURCE_MIDDLEWARE_KEY } from '../constants.js';
/**
* The ResourceMiddleware decorator applies middleware to specific resource actions.
*
* @param actions Resource actions to protect ('*' for all actions)
* @param middleware Middleware to apply to the actions
*
* @example
* ```ts
* // Protect all resource actions
* @Resource('/users')
* @ResourceMiddleware('*', [middleware.auth()])
* export default class UsersController {
* // All methods protected by auth middleware
* }
*
* // Protect specific actions
* @Resource('/posts')
* @ResourceMiddleware(['store', 'update', 'destroy'], [middleware.auth()])
* export default class PostsController {
* // Only write operations are protected
* }
* ```
*/
export const ResourceMiddleware = (actions, middleware) => {
return (target) => {
const resourceMiddleware = Reflect.getMetadata(REFLECT_RESOURCE_MIDDLEWARE_KEY, target) || [];
resourceMiddleware.push({ actions, middleware });
Reflect.defineMetadata(REFLECT_RESOURCE_MIDDLEWARE_KEY, resourceMiddleware, target);
};
};