ZendFramework et ACL
Je ne vais pas expliquer comment fonctionnent les ACL dans le Zend Framework, ils le font très bien ...
Par contre, a un moment ou a un autre, créer une structure compliquée d'ACL, ça peut être difficile a débugger ... On sait pas si dans tel ou tel cas on est ou non autorisé en fonction des héritages multiple des rôles et des test que l'ont fait sur les acces ... Bref peu importe ... si vous voulez tester vos droits j'ai fait une petite fonction qui rend bien service !
J'ai un controlleur TestsController avec une action aclAction et la je load un fichier acl.tests.php Dans ce fichier j'ai mis ma fonction et mes tests :
function matrixAcl($title, $acl, $roles, $resources, $rights) { $ok = 'yellow'; $ko = 'red'; echo "<h2>$title</h2>"; echo "<table>"; echo "<tr>"; echo "<th></th>"; foreach ($roles as $role) { echo "<th>$role</th>"; } echo "</tr>"; foreach ($resources as $resource) { echo "<tr>"; echo "<th>$resource</th>"; foreach ($roles as $role) { if ($rights) { if (is_array($rights)) { echo "<td>"; foreach ($rights as $right) { echo '<b style="color:'. ($acl->isAllowed($role, $resource, $right) ? $ok : $ko) .';">'; echo $right; echo '</b><br />'; } echo "</td>"; } else { echo '<td style="background:'. ($acl->isAllowed($role, $resource, $rights) ? $ok : $ko) .';">'; echo "<b>$rights</b>"; echo '</td>'; } } else { echo '<td style="background:'. ($acl->isAllowed($role, $resource, null) ? $ok : $ko) .';">'; echo '</td>'; } } echo "</tr>"; } echo "</table>"; } /* tests */ $acl = Zend_Registry::get('ACL'); $roles = array('User', 'AuthUser', 'Pro', 'Manager', 'Admin'); $resources = array('DBAdmin', 'LockedResource'); $rights = array('view', 'edit'); matrixAcl('Base test', $acl, $roles, $resources, $rights); $resources = array('DBAdmin'); $rights = null; matrixAcl('DBAdmin all access', $acl, $roles, $resources, $rights);
Voila et je vois clairement ou ça pèche ! Evidemment pour l'instant mes besoins en ACL ne sont pas très évolué, mais je suis sur que par la suite, ça me servira :)
PS: je suis daltonien ce qui explique le choix du jaune et du rouge ... enfin vous pouvez le changer hein ...

Comments
Effectivement, il va falloir que je teste ça.
Moi j'étais resté sur CakePhp, mais ZendF m'a l'air prometteur.