@elsikora/nestjs-crud-automator
Version:
A library for automating the creation of CRUD operations in NestJS.
34 lines (31 loc) • 1.28 kB
JavaScript
;
/**
* Checks whether a granted permission satisfies a required permission.
* Supported wildcard forms are `*`, `<prefix>.*`, and exact matches.
* Wildcards are evaluated only on granted permissions.
* @param {string} grantedPermission - Permission granted to the principal.
* @param {string} requiredPermission - Concrete permission required by the rule.
* @returns {boolean} True when the granted permission satisfies the requirement.
*/
function AuthorizationPermissionMatches(grantedPermission, requiredPermission) {
if (grantedPermission.length === 0 || requiredPermission.length === 0) {
return false;
}
if (grantedPermission === "*") {
return true;
}
if (!grantedPermission.includes("*")) {
return grantedPermission === requiredPermission;
}
if (!grantedPermission.endsWith(".*")) {
return false;
}
// eslint-disable-next-line @elsikora/typescript/no-magic-numbers
const permissionPrefix = grantedPermission.slice(0, -2);
if (permissionPrefix.length === 0) {
return false;
}
return requiredPermission.startsWith(`${permissionPrefix}.`);
}
exports.AuthorizationPermissionMatches = AuthorizationPermissionMatches;
//# sourceMappingURL=matches.utility.js.map