La façon dont je procède généralement pour coder les systèmes d'autorisation est d'avoir 6 tables.
- Utilisateurs - c'est assez simple, c'est votre tableau d'utilisateurs typique
- Groupes : ce serait synonyme de vos services
- Rôles : il s'agit d'un tableau avec toutes les autorisations, y compris généralement un nom lisible par l'homme et une description
- Users_have_Groups - il s'agit d'un tableau plusieurs-à-plusieurs des groupes auxquels appartient un utilisateur
- Users_have_Roles : un autre tableau plusieurs-à-plusieurs des rôles attribués à un utilisateur individuel
- Groups_have_Roles : le tableau final plusieurs-à-plusieurs des rôles de chaque groupe
Au début d'une session d'utilisateurs, vous exécutez une logique qui extrait tous les rôles qu'ils ont attribués, soit par répertoire, soit par l'intermédiaire d'un groupe. Ensuite, vous codez en fonction de ces rôles en tant que vos autorisations de sécurité.
Comme je l'ai dit, c'est ce que je fais habituellement, mais votre kilométrage peut varier.