@elsikora/nestjs-crud-automator
Version:
A library for automating the creation of CRUD operations in NestJS.
36 lines (32 loc) • 1.68 kB
JavaScript
;
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