UNPKG

@elsikora/nestjs-crud-automator

Version:

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

48 lines (45 loc) 2.25 kB
'use strict'; var tslib_es6 = require('../../../../../external/tslib/tslib.es6.js'); var cache_class = require('./cache.class.js'); var hookPermissionSourcesToken_constant = require('../../../../../constant/class/authorization/hook-permission-sources-token.constant.js'); var common = require('@nestjs/common'); var logger_utility = require('../../../../../utility/logger.utility.js'); const hookPermissionResolverLogger = logger_utility.LoggerUtility.getLogger("ApiAuthorizationHookPermissionResolver"); exports.ApiAuthorizationHookPermissionResolver = class ApiAuthorizationHookPermissionResolver { cache; sources; constructor(cache, sources = []) { this.cache = cache; this.sources = sources; } clear() { this.cache.clear(); } async resolve(principal) { const cachedPermissions = this.cache.get(principal); if (cachedPermissions) { hookPermissionResolverLogger.verbose(`Using cached hook permissions for principal "${principal.id}" (${cachedPermissions.length} permissions).`); return cachedPermissions; } const permissions = new Set(); for (const source of this.sources) { const resolvedPermissions = await source.getPermissions(principal); for (const permission of resolvedPermissions) { if (typeof permission === "string" && permission.length > 0) { permissions.add(permission); } } } const result = [...permissions]; this.cache.set(principal, result); hookPermissionResolverLogger.verbose(`Resolved ${result.length} hook permissions for principal "${principal.id}" from ${this.sources.length} sources.`); return result; } }; exports.ApiAuthorizationHookPermissionResolver = tslib_es6.__decorate([ common.Injectable(), tslib_es6.__param(1, common.Inject(hookPermissionSourcesToken_constant.AUTHORIZATION_HOOK_PERMISSION_SOURCES_TOKEN)), tslib_es6.__param(1, common.Optional()), tslib_es6.__metadata("design:paramtypes", [cache_class.ApiAuthorizationHookPermissionCache, Array]) ], exports.ApiAuthorizationHookPermissionResolver); //# sourceMappingURL=resolver.class.js.map