UNPKG

@elsikora/nestjs-crud-automator

Version:

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

52 lines (49 loc) 2.89 kB
'use strict'; var tslib_es6 = require('../../../../external/tslib/tslib.es6.js'); var base_class = require('./base.class.js'); var registry_class = require('./registry.class.js'); var decorator_constant = require('../../../../constant/class/authorization/policy/decorator.constant.js'); var common = require('@nestjs/common'); var core = require('@nestjs/core'); var logger_utility = require('../../../../utility/logger.utility.js'); const policyDiscoveryLogger = logger_utility.LoggerUtility.getLogger("ApiAuthorizationPolicyDiscoveryService"); exports.ApiAuthorizationPolicyDiscoveryService = class ApiAuthorizationPolicyDiscoveryService { discoveryService; registry; constructor(discoveryService, registry) { this.discoveryService = discoveryService; this.registry = registry; } onModuleInit() { policyDiscoveryLogger.verbose("Starting authorization policy discovery..."); const providers = this.discoveryService.getProviders(); const policyProviders = providers.filter((wrapper) => Boolean(wrapper.instance && wrapper.metatype && wrapper.instance instanceof base_class.ApiAuthorizationPolicyBase && Reflect.hasMetadata(decorator_constant.AUTHORIZATION_POLICY_DECORATOR_CONSTANT.METADATA_KEY, wrapper.metatype))); for (const wrapper of policyProviders) { if (!wrapper.metatype) { continue; } const metadata = Reflect.getMetadata(decorator_constant.AUTHORIZATION_POLICY_DECORATOR_CONSTANT.METADATA_KEY, wrapper.metatype); const properties = metadata; if (!properties) { continue; } const policyId = properties.policyId ?? `${properties.entity.name?.toLowerCase() ?? "unknown"}${decorator_constant.AUTHORIZATION_POLICY_DECORATOR_CONSTANT.DEFAULT_POLICY_ID_SUFFIX}`; this.registry.registerSubscriber({ cache: properties.cache, description: properties.description, entity: properties.entity, policyId, priority: properties.priority ?? 0, subscriber: wrapper.instance, }); policyDiscoveryLogger.verbose(`Registered authorization policy ${wrapper.name ?? properties.entity.name ?? "UnknownPolicy"} for entity ${properties.entity.name ?? "UnknownEntity"} with priority ${properties.priority ?? 0}`); } policyDiscoveryLogger.verbose(`Authorization policy discovery finished. Registered ${policyProviders.length} providers.`); } }; exports.ApiAuthorizationPolicyDiscoveryService = tslib_es6.__decorate([ common.Injectable(), tslib_es6.__metadata("design:paramtypes", [core.DiscoveryService, registry_class.ApiAuthorizationPolicyRegistry]) ], exports.ApiAuthorizationPolicyDiscoveryService); //# sourceMappingURL=discovery-service.class.js.map