CASL
NestJS 🔴 SeniorDéfinition
Librairie d'autorisation isomorphe qui définit les abilities (permissions) de façon déclarative. S'intègré avec NestJS via un guard custom.
Analogie
Comme un règlement intérieur détaillé : chaque personne sait exactement ce qu'elle peut et ne peut pas faire.
Exemple de code
const ability = defineAbility((can, cannot) => {
can('read', 'Article');
can('update', 'Article', { authorId: user.id });
cannot('delete', 'Article');
});
// ability.can('update', article) -> true/false
Cas d'usage
Gérer des permissions granulaires avec des conditions sur les champs des entités.