UNPKG

@elsikora/nestjs-crud-automator

Version:

A library for automating the creation of CRUD operations in NestJS.

34 lines (31 loc) 1.58 kB
import { EApiPolicyOnType } from '../../../../enum/class/authorization/policy/on-type.enum.js'; import { CamelCaseString } from '../../../../utility/camel-case-string.utility.js'; import { LoggerUtility } from '../../../../utility/logger.utility.js'; const policyExecutorLogger = LoggerUtility.getLogger("ApiAuthorizationPolicyExecutor"); class ApiAuthorizationPolicyExecutor { static async execute(subscriber, action, context) { const routeType = context.routeType; if (routeType) { const hookName = `on${EApiPolicyOnType.BEFORE}${CamelCaseString(routeType)}`; const hook = Reflect.get(subscriber, hookName); if (typeof hook === "function") { policyExecutorLogger.verbose(`Executing authorization policy hook ${hookName} from ${subscriber.constructor.name} for action "${action}"`); const typedHook = hook; const result = typedHook.call(subscriber, context); return this.normalizeRuleResult(await result); } return []; } if (typeof subscriber.getCustomActionRule !== "function") { return []; } const customActionHook = subscriber.getCustomActionRule.bind(subscriber); const customResult = customActionHook(action, context); return this.normalizeRuleResult(await customResult); } static normalizeRuleResult(result) { return result.filter((rule) => rule != null); } } export { ApiAuthorizationPolicyExecutor }; //# sourceMappingURL=executor.class.js.map