Bonjour bonjour,

Je cherche actuellement à développer un module RBAC réutilisable qui me permettrait de gérer les permissions des utilisateurs de façons à la fois précise et flexible, qui puisse être utilisé pour n'importe quel site (forums, blogs, sites de commerce, ...).
D'après mes recherches, la plupart des modules proposés sur Internet ne couvrent pas les portées des permissions, ou du moins je n'arrive pas à trouver la façon dont ils le font.

Or, il me semble indispensable de pouvoir définir permissions du type:
- Modifier son propre mot de passe, mais pas celui d'un autre utilisateur
- Assigner les utilisateurs à des groupes, mais ne lister que certains groupes (pour ne pas qu'un modérateur puisse donner des droits de modération ou d'administration à un groupe)
- Autoriser l'ajout de pages (ou de posts si on parle d'un forum), mais que dans certaines catégories
- ...

Afin de faire un système le plus flexible possible, je pense modéliser mon système de la façon suivante:
- Users (idUser, ...)
- Groups (idGroup, ...)
- User_Groups (idUser, idGroup)
- Group_Permissions (idPermission, idGroup, actionAllowed)
- Permission_Scopes (idPermission, Field, condition) //Ex: Field: idUser, Condition: "idUser=10"

Ainsi, la table Permission_Scope définit zéro, une ou plusieurs conditions d'application de l'autorisation donnée. Exemple: mon modérateur peut éviter les postes uniquement des membres et pas des autres modérateurs (restriction en fonction de idGroup), et uniquement pour une section du forum définir (en fonction de idSectionForum).
Je sépare le champs Field et Condition afin de pouvoir faire une requête recherchant les limitations d'un utilisateur pour un attribut donné (dans le cas de restrictions multiples).

Ce système vous semble-t-il cohérent, ou existe-il une autre modélisation possible qui serait plus propre/flexible/pratique?

Merci d'avance pour vos feedbacks!