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