Je travaille sur un système de rôles/permissions pour mon application web et je ne sais pas trop comment structurer cela.Définition d'un modèle de sécurité avec des autorisations/rôles implicites
En résumé. Les utilisateurs peuvent accéder à un certain nombre de projets. Ceci est une participation et, entre autres choses, une participation a un profil avec un certain nombre de droits. Ce sont donc des droits spécifiques à un utilisateur dans un projet. Une Participation a aussi un Type (Admin, Support, etc.).
Un profil est basé sur un rôle. Les rôles (peut-être mal nommés) sont effectivement des profils standard avec des configurations de droits par défaut définies à l'avance par les administrateurs. Lors de la création d'un nouveau profil, on choisit un rôle pour agir comme base et ensuite, si nécessaire, on ajuste les droits. Les profils ne sont pas exclusifs à un utilisateur.
Jusqu'à présent, si bien (ou pas! Vous me dire!)
Les droits sont regroupés par contexte/sujet. Ainsi, par exemple, tous les droits relatifs aux «tâches de projet» sont regroupés. Je n'ai pas modélisé cela parce que c'est géré par l'interface utilisateur (je ne sais pas si c'est une mauvaise chose).
Maintenant, mon problème est le suivant. Selon le type de participation, certains droits sont implicites et ne doivent pas être désactivés. Ainsi, lors de la création d'un rôle pour une participation «Support», le droit «Voir mes propres tickets de support» doit être implicite et non affiché, ou désactivé pour ne pas pouvoir être modifié. Alors qu'un type de participation différent peut éventuellement affecter ce droit ou non.
J'ai essentiellement une feuille de calcul avec le type de participant/droit = ne peut pas appliquer, peut s'appliquer (sélectionné ou non) & Toujours s'applique. par exemple:
| RIGHT | INV | SUP | ADM |
| ------------------ | --- | --- | --- |
| G_PROJECTS_READ | I | I | Y |
| G_PROJECTS_UPDATE | Y | N | Y |
| G_PROJECTS_CREATE | N | N | Y |
| G_PROJECTS_PUBLISH | N | N | Y |
Where Y = Type can toggle right on/off, N = Type doesn't have right
& I = Implied i.e. Type has right and it can't be deselected
Des idées/des pointeurs sur la façon dont cela peut être modélisé?
Un grand merci,
AW
Avez-vous envisagé de supprimer la complexité de votre modèle en créant _all possible_ "rôles de participation" encodés dans votre feuille de calcul, supprimant ainsi la nécessité de modéliser le troisième "type" de permission? Quiconque est chargé d'assigner une participation à un utilisateur peut simplement choisir le rôle approprié au lieu de devoir en créer un (et éventuellement faire une erreur) à la volée. Ainsi, pour votre exemple de feuille de calcul, il y aurait un maximum de deux choix possibles (en ignorant les rôles d'administrateur) que vous pourriez lier au type de participation: PARTICIPATION_READ_ONLY et PARTICIPATION_READ_UPDATE – fspinnenhirn