UNPKG

@n4it/crud-policy

Version:

NestJs CRUD for RESTful APIs - policy

45 lines 1.89 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.validatePolicies = exports.validatePolicyWildcard = void 0; const is_1 = require("./is"); const make_policy_1 = require("./make-policy"); const validatePolicyWildcard = (userPolicies, entity, action, entityId) => { const managePolicy = (0, make_policy_1.createManagePolicy)(entity, entityId); const writePolicy = (0, make_policy_1.createWritePolicy)(entity, entityId); const readPolicy = (0, make_policy_1.createReadPolicy)(entity, entityId); if ((0, is_1.isManageAction)(action) && userPolicies.includes(managePolicy)) { return true; } if ((0, is_1.isReadOrWriteAction)(action) && (userPolicies.includes(managePolicy) || userPolicies.includes(writePolicy))) { return true; } if ((0, is_1.isReadAction)(action) && (userPolicies.includes(managePolicy) || userPolicies.includes(writePolicy) || userPolicies.includes(readPolicy))) { return true; } return false; }; exports.validatePolicyWildcard = validatePolicyWildcard; const validatePolicies = (requiredPolicies, userPolicies, entityId) => { return requiredPolicies.every(({ action, name }) => { if ((0, exports.validatePolicyWildcard)(userPolicies, name.split('.')[0], action)) { return true; } if ((0, exports.validatePolicyWildcard)(userPolicies, name, action)) { return true; } if (entityId && (0, exports.validatePolicyWildcard)(userPolicies, name.split('.')[0], action, entityId)) { return true; } if (entityId && (0, exports.validatePolicyWildcard)(userPolicies, name, action, entityId)) { return true; } return false; }); }; exports.validatePolicies = validatePolicies; //# sourceMappingURL=validate.js.map