@n4it/crud-policy
Version:
NestJs CRUD for RESTful APIs - policy
45 lines • 1.89 kB
JavaScript
;
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