Je suis vraiment dans l'embarras une fois encore, et je ne sais pas du tout pourquoi.
J'ai un user avec l'id 1 dans un group 1, les AROS sont bien configurés dès le save().
Après j'ai créé un ptit script pour gérer les ACOS par rapport a celui qu'ils donnent sur le tuto de Cakephp1.3, ils enregistrent tout de cette facon: parent_id est OK, Null pour Model, Null pour foreign_key, et puis comme alias le nom du controller ex: Admin

Je créé mon ACL comme ça:

$this->Group->id = 1;
        echo $this->Acl->deny($this->Group, 'controllers');
        echo $this->Acl->deny($this->Group, 'controllers/Admin');

Cela s'enregistre bien.
Alors que pas loggé je n'ai accès qu'à mon login et mon signup, si je suis loggé j'ai accès à tout alors que je devrais avoir accès à rien....
Si quelqu'un est capable de m'expliquer mon probleme...

Merci :D

5 réponses


J'ai plus utilisé les ACO/ARO depuis un moment mais tu peux essayer d'utiliser la fonction check() pour vérifier si les ACLs sont bien fonctionnelles.

Tux1
Auteur

Je dois être nul car en reprenant exactement l'exemple de la bakery, ça marche pas perso...
J'arrive pas à trouver de sources pour voir un truc qui marche en 2.x...

J'utilise PhpAcl plutôt que DbAcl perso en ce moment que je trouve plus pratique et plus léger. Les changements se font direct et il n'y a pas d'accès inutiles à la base de données à chaque chargement de page. DbAcl est assez mal pensé pour ça. Trop complexe à mettre en oeuvre et assez lourd.

Sinon pour en revenir à ton problème, pourquoi ce "echo" devant les deny ?
Si je me réfère à la doc concernant une application liée aux Acl, ils n'utilisent pas $this->Group mais $this->User->Group. Ce qui chez toi donnerait :

$group = $this->User->Group;
$group->id = 1;
$this->Acl->deny($group, 'controllers');
$this->Acl->deny($group, 'controllers/Admin');

Je suppose qu'il faut passer par le modèle User et les liaisons plutôt que Group, ils ont peut être besoin de ça, je ne sais pas trop. A tester peut-être.

Tux1
Auteur

Echo ou pas ça change rien logiquement, et puis ta deuxieme hypothèse j'ai testé les deux :( marche pas mais merci de ton aide.
Tu peux m'en dire plus sur phpacl ?

Dans ton dossier de config tu as un fichier nommé acl.php, CakePhp se base la dessus plutôt que sur les bases de données pour regarder tous les accès. Regarde tout y est expliqué avec un exeple donné. Pour utiliser ça il te suffit dans ton core.php de configurer en PhpAcl au lieu de DbAcl et c'est bon.
Dis moi si tu ne comprends pas quelque chose :)