refactor: Permission model sanitize method

This commit is contained in:
Faruk AYDIN
2024-10-18 15:33:47 +02:00
parent 0234b4ad81
commit f280052d93

View File

@@ -19,25 +19,39 @@ class Permission extends Base {
}, },
}; };
static sanitize(permissions) { static filter(permissions) {
const sanitizedPermissions = permissions.filter((permission) => { const sanitizedPermissions = permissions.filter((permission) => {
const { action, subject, conditions } = permission; const { action, subject, conditions } = permission;
const relevantAction = permissionCatalog.actions.find( const relevantAction = this.findAction(action);
(actionCatalogItem) => actionCatalogItem.key === action const validSubject = this.isSubjectValid(subject, relevantAction);
); const validConditions = this.areConditionsValid(conditions);
const validSubject = relevantAction.subjects.includes(subject);
const validConditions = conditions.every((condition) => {
return !!permissionCatalog.conditions.find(
(conditionCatalogItem) => conditionCatalogItem.key === condition
);
});
return validSubject && validConditions; return relevantAction && validSubject && validConditions;
}); });
return sanitizedPermissions; return sanitizedPermissions;
} }
static findAction(action) {
return permissionCatalog.actions.find(
(actionCatalogItem) => actionCatalogItem.key === action
);
}
static isSubjectValid(subject, action) {
return action && action.subjects.includes(subject);
}
static areConditionsValid(conditions) {
return conditions.every((condition) => this.isConditionValid(condition));
}
static isConditionValid(condition) {
return !!permissionCatalog.conditions.find(
(conditionCatalogItem) => conditionCatalogItem.key === condition
);
}
} }
export default Permission; export default Permission;