Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] ACL et Resources

Posted by galves on 08/28/2006 22:47

Bonsoir, Dans la doc sur les ACL, il est fait mention des resources:

Dans la plupart des cas, l’association sujet + utilisateur + droit >suffit. Mais parfois on veut pouvoir avoir une granularité plus fine.

Par exemple, dans un système CMS, on veut pouvoir donner le droit de >modification à un utilisateur sur ses propres articles, mais pas sur >ceux des autres. Il faut alors rajouter dans cette association >l’identifiant de l’article.

Par exemple, on donnera les droits suivants
*“création” sur le sujet cms.article pour le groupe redacteurs
*“modification” sur la ressource “monarticle” pour l’utilisateur >toto faisant parti du groupe redacteur

Je dois avouer que je suis perplexe. Doit-on céer une entrée dans la table jacl_rights par article ? Si ce n'est pas le cas, à quel momment est fait le check pour savoir si l'article m'appartient ou pas ? Bref, un petit exemple m'aiderait bien à comprendre comment c'est sensé être utilisé...

  [Opened] Re: ACL et Resources

Reply #1 Posted by laurentj on 08/29/2006 10:33

Doit-on céer une entrée dans la table jacl_rights par article ?

oui tout à fait. Mais tu n'as pas à le faire, la classe jAclManager le fait pour toi, en lui donnant un paramètre supplementaire, contenant une chaine identifiant une ressource (id d'un article par ex)

  jAclManager::setRight(2, 'mycms.article.access', 5 , 654);

2 = id groupe user, 5= une valeur, 654 = id de l'article

Si tu veux enlever le droit, en principe il y a juste à faire (valeur à 0)

  jAclManager::setRight(2, 'mycms.article.access', 0 , 654);

Et si l'article est détruit, plus besoin de garder les droits dessus :

  jAclManager::removeResourceRight( 'mycms.article.access', 654);

(au fait, si tu fais une interface html pour gérer les droits, ça m'interresse, je pourrais intégrer ça directement dans le module acl)

  [Opened] Re: ACL et Resources

Reply #2 Posted by galves on 08/29/2006 22:19

OK merci. Dans mon cas, le doit ne concerne que l'auteur de l'article, donc il n'y a pas spécialement d'intérêt à faire ça plutôt que checker que l'auteur de l'article correspond au login de l'utilisateur. En revanche, je vois bien l'intérêt pour un groupe de personnes ou pour des users qui n'ont pas de 'relation' avec le sujet du droit.

  [Opened] Re: ACL et Resources

Reply #3 Posted by laurentj on 08/29/2006 23:52

Dans jAcl, chaque utilisateur possède son propre groupe privé (où ils sont tous seul dans leur propre groupe). Donc tu peux donner l'id du groupe privé de l'utilisateur. En fait, un droit n'est jamais rattaché à un user, mais toujours à un groupe. D'où l'histoire du groupe privé pour assigner des droits à un utilisateur particulier (et cela simplifie le code, pas besoin de table de droit entre droit et user etc...)

pour trouver l'id du groupe privé du user, je viens de me rendre compte qu'il n'y a rien dans les classes jAcl, juste une méthode getPrivateGroup($login) sur le dao acl~jaclgroup.

 
Page
  1. ACL et Resources