Ceci est une ancienne révision du document !
Ce composant a été écrit alors que l'implémentation des ACL de CakePHP ne supportait pas le stockage des droits d'accès en base de données, ce qui à mes yeux rendait l'utilisation des ACL impossible. Il pourrait être considéré aujourd'hui comme déprécié, mais peut néanmoins encore être utilisé.
Ce composant permet de gérer les droits d'accès de chaque rôle sur chaque action, ou sur toutes les actions ayant un même préfixe. Par exemple, un utilisateur ayant le rôle administrateur pourrait accéder à toutes les actions dont le préfixe est admin (admin_index, admin_view, admin_edit, …).
Le composant ne gère pas l'authentification elle-même, mais seulement le fait d'authoriser ou non l'accès à une action. Pour fonctionner,
$logged_user = $this->Session->read(LOGGED_USER); foreach ($logged_user[LOGGED_USER_ROLES] as $role) { (...) }
La configuration de l'accès à une méthode protégée se fait au moyen des deux méthodes suivantes:
add_action($action_name, $authorized_roles)
Permet de déterminer quels rôles ont accès à une action en particulier
Exemple:
/* * Here the AccessManager is configured to grant access to the admin_edit actions to admin users * * (here 1 is the id of the administrator role) */ $this->AlaxosAccessManager->add_action('admin_edit', 1);
add_prefix($action_name, $authorized_roles)
Permet de déterminer quels rôles ont accès à toutes les actions commençant par un préfixe
Exemple:
/* * Here the AccessManager is configured to grant access to all admin_... actions to admin users * * (here 1 is the id of the administrator role) */ $this->AlaxosAccessManager->add_prefix('admin', 1);
set_login_url($login_controller = 'users', $login_action = 'login')
Permet d'indiquer au composant sur quelle url rediriger un utilisateur n'ayant pas accès à la page demandée
Ce composant n'est plus maintenu, car depuis que les ACL peuvent être stockées en base de données, je préfère les utiliser pour leur souplesse.
Cette approche permettait néanmoins de mettre en place rapidement des droits d'accès, en particulier dans le cas où un utilisateur pouvait avoir plusieurs rôles:
users ←–> users_roles ←–> roles