Gestion des droits d'utilisateurs sur un forum

Gestion des droits d'utilisateurs sur un forum - SQL/NoSQL - Programmation

Marsh Posté le 11-08-2005 à 16:57:22    

Je voulais avoir l'opinion des gens sur ma gestion des droits sur un forum
enfin pour tout un site en fait.
Sur le site je veux qu'il y ai un maximum d'évolutivité
et que les droits à proprement dits soient eux aussi etrèmement évolutifs par exemple :
(les drotis pour chacun d'eux sont divisés en 4 : view, add, maj , suppr)
sur les news par exemple,
sur les lieux de sortie,
sur les soirées
sur l'album photo
et sur chaque partie du forum
plus de même pour la longue administration que cela implique.
 
J'ai organisé ces droits de al façon suivante :
il existe des droits (une table)
et des groupes de droits (une table)
ces groupes de droits on 0 à n droits (table intermédiaire entre les droits et les groupes de droit). Du genre, le groupe 5 a le droit au droit 3,34,36,97.
Et les utilisateurs font partie ou non de ces groupes (table intermédiaire encore entre utilisateurs et groupes de droit) (l'utilsateur 4 appartient au groupe 3,4,6 l'ustilisatuer 3 apparatient seulement au groupe 5, et le 19 apparatient à aucun)
De plus j'ai créé une notion de droits individuels c'est à dire tout simplement une table intermédiaire entre les utilisateurs et les droits
exemple l'utilisateur 19 a les droits 15,16,17
de plus et enfin , l'ai mon objet utilisateur une méthode qui porte bien son nom $user->aDroit("add_news" ) et là cette fonction check sur les droits individuels et les droits de groupes i l'utilisatuer a le droit ou non (il me renvoie un booleen).
De plus je préfère questionner sur la string, car la nomenclature de création est assez stricte, et je veux que les numéros de droits importent peu par rapport à la page et cela permet de le supprimer et de le refaire plus loin.
Vous ne pensez quoi ?(je sais c'st un peu long à lire...)
http://lordashram.free.fr/gestion_droits.jpg voilà une imga pour aider, pas de critique j'l'ai faite en speed sur paint lol :lol:  
Dites moi ce que vous en pensez plz  :jap:  

Reply

Marsh Posté le 11-08-2005 à 16:57:22   

Reply

Marsh Posté le 11-08-2005 à 19:37:03    

Ca me semble tout à fait complet :)
 
Peut-être un peut trop mais bon, au moins, tu pourras voir venir :D
 
Sinon, je suis d'accord avec le coup du string pour aDroit(), même si c'est vrai que c'est pas très propre, ça a l'avantage d'être évolutif sans toucher au code.

Reply

Marsh Posté le 12-08-2005 à 01:39:05    

à ton avis c'est grave la redondance entre les droits de groupes et les droits individuels ou c'est bon ça peut passer, en gros ça doit être géré par l'admin, mais j'ai trop d'users pour avoir une vue de loin...
J'devrais faire un bout de script qui empèche la redondance ou pas?

Reply

Marsh Posté le 12-08-2005 à 04:12:22    

Quel redondance ? dans le cas ou un user se retrouve avec un droit de groupe et un droit perso pour la même ressource ?  
 
C'est pas mon domaine mais pour moi c'est pas de la vrai redondance ça, c'est inhérent au modèle.  
 
Puis imagine un user reçoit un droit perso à une ressource, puis plustard y rentre dans un groupe qui donne aussi accès à cette ressource, toi tu veux éviter cette redondance, tu fais quoi ? ton script supprime son droit perso ? ok, et le jour ou y perd son droit de groupe y se passe quoi ? il aura perdu son droit perso définitivement.  
 
Tu peux toujours prévenir l'admin et alors lui pourra prendre une décision mais c'est tout.
 
Pour moi c'est très bien comme c'est là.

Reply

Marsh Posté le 12-08-2005 à 10:10:50    

Un truc important par contre.
 
Réutilise le système de droits de Windows (qui se base sur ce que tu veux faire, avec ses utilisateurs par utilisateur et par groupe).
Sous Windows, les droits ont trois états :
 
- A le droit : L'utilisateur a évidement le droit à l'action spécifiée sur l'objet spécifié.
- Non renseigné : Hérité. Pas défaut, il n'a pas le droit, sauf si un de ses groupes a le droit.
- N'a pas le droit : C'est ce droit qui prime sur tout autre droit explicite au niveau groupe. Exemple : L'utilisateur A appartient aux groupes Alpha et Beta. Si Beta n'a pas le droit à une action, mais Alpha a le droit, alors il n'y a pas droit. Par contre, s'il A a le droit, quelque soit les droits au niveau Alpha ou Beta, il a tout de même le droit.
 
En bref :
-> Tu scannes les droits explicites.
-> Si "a le droit", ou "n'a pas le droit", tu gardes cette valeur, elle prime sur toutes les autres.
-> Si non renseigné, tu scannes les droits de tous ses groupes.
-> Si un seul des groupes "n'a pas le droit", alors il n'a pas le droit. Si au moins un groupe "a le droit" (et aucun n'a pas le droit), alors il a le droit.
-> Si à ce stade tu n'as trouvé aucun droit, alors il n'a pas le droit.
 
Pense cependant, dans l'admin, si tu ouvres la gestion des droits aux utilisateurs, à permettre au groupe "administrateur" de modifier les droits sur des objets où ils n'ont pas le droit. Pour les autres utilisateurs, il faut avoir un droit spécifique pour changer les droits sur chaque objet.


Message édité par Arjuna le 12-08-2005 à 10:11:58
Reply

Marsh Posté le 12-08-2005 à 10:12:35    

Pour moi, ce système de gestion des droits est ce qu'il y a de plus puissant et de plus souple. Un peu rébarbatif parfois mais bon.

Reply

Marsh Posté le 12-08-2005 à 18:09:53    

c'est un peu compliqué je trouve, car la notion des doubles droits des groupes est certes bien mais dure cela dit je préfère utiliser la méthode plsu dure à savoir => PAS LE DROIT si la personne a un droit que ce soit par son groupe ou individuellement eh bien alors on ne peut le lui enlever. En fait si j'ai bien compris, les droits individuels priment sur les droits dûs au groupes, je voulais justement qu'ils soient à égalité quite  devoir faire plsu de groupes comme ça cela me fait moins de tests de partout => Optimisation parce que tu n'imagines même pas le nombre incalculable de fosi que je peux faire le test, vu que je n'ai pas trouvé indispensable de stocker les droits j'ai plutôt créé une fonction simple rapide et efficace qui le demande au serveur plutôt que de trimbaler dans l'url pour la session toutes ces valeur...

Reply

Marsh Posté le 12-08-2005 à 19:17:18    

Ben tu peux très bien modifier la règle et dire : si droit groupe ou utisateur = "pas droit", alors "pas droit".
Ca, t'es parfaitement libre ;)
 
Seul truc, c'est que parfois, un utilisateur est presque comme un groupe, mais il lui fait un droit particulier, et là, t'es baisé.
 
Ceci dit, avec la notion de "si droit pas explicite, alors c'est les autres qui priment", ça résoud le problème facilement. C'est comme ça que marche Windows : généralement, on donne des droits ou on en enlève, et c'est très rare qu'on interdise.

Reply

Marsh Posté le 12-08-2005 à 20:41:30    

demande à Joce se qu'il a fait comme choix  :o  
http://forum.hardware.fr/hardwaref [...] 63-294.htm

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed