UNPKG

@elsikora/nestjs-crud-automator

Version:

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

36 lines (32 loc) 1.68 kB
'use strict'; var onType_enum = require('../../../../enum/class/authorization/policy/on-type.enum.js'); var camelCaseString_utility = require('../../../../utility/camel-case-string.utility.js'); var logger_utility = require('../../../../utility/logger.utility.js'); const policyExecutorLogger = logger_utility.LoggerUtility.getLogger("ApiAuthorizationPolicyExecutor"); class ApiAuthorizationPolicyExecutor { static async execute(subscriber, action, context) { const routeType = context.routeType; if (routeType) { const hookName = `on${onType_enum.EApiPolicyOnType.BEFORE}${camelCaseString_utility.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); } } exports.ApiAuthorizationPolicyExecutor = ApiAuthorizationPolicyExecutor; //# sourceMappingURL=executor.class.js.map