UNPKG

@elsikora/nestjs-crud-automator

Version:

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

38 lines (34 loc) 2.35 kB
'use strict'; require('../../../enum/class/authorization/cache-mode.enum.js'); require('../../../enum/class/authorization/decision-type.enum.js'); require('../../../enum/class/authorization/effect.enum.js'); require('../../../enum/class/authorization/mode.enum.js'); var permissionMatch_enum = require('../../../enum/class/authorization/permission-match.enum.js'); require('../../../enum/class/authorization/policy/attachment-type.enum.js'); require('../../../enum/class/authorization/policy/on-type.enum.js'); require('../../../enum/class/authorization/policy/source-type.enum.js'); require('../../../enum/class/authorization/policy/status.enum.js'); require('../../../enum/class/authorization/principal-type.enum.js'); var matches_utility = require('./matches.utility.js'); /** * Checks whether granted permissions satisfy the required permissions. * An empty granted or required list never matches. * @param {Array<string>} grantedPermissions - Permissions granted to the principal. * @param {Array<string>} requiredPermissions - Concrete permissions required by the rule. * @param {{ match?: EApiAuthorizationPermissionMatch }} [options] - Required permission matching strategy. * @param {EApiAuthorizationPermissionMatch} [options.match] - `ANY` requires one matching permission, `ALL` requires every permission. * @returns {boolean} True when the granted permissions satisfy the requested match strategy. */ function AuthorizationPermissionSetMatches(grantedPermissions, requiredPermissions, options = {}) { if (grantedPermissions.length === 0 || requiredPermissions.length === 0) { return false; } const matchMode = options.match ?? permissionMatch_enum.EApiAuthorizationPermissionMatch.ANY; const hasRequiredPermission = (requiredPermission) => grantedPermissions.some((grantedPermission) => matches_utility.AuthorizationPermissionMatches(grantedPermission, requiredPermission)); if (matchMode === permissionMatch_enum.EApiAuthorizationPermissionMatch.ALL) { return requiredPermissions.every((requiredPermission) => hasRequiredPermission(requiredPermission)); } return requiredPermissions.some((requiredPermission) => hasRequiredPermission(requiredPermission)); } exports.AuthorizationPermissionSetMatches = AuthorizationPermissionSetMatches; //# sourceMappingURL=set-matches.utility.js.map