Outils pour utilisateurs

Outils du site


tips_informatiques:programmation:php:plugin_alaxos:components:alaxosaccessmanagercomponent

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
tips_informatiques:programmation:php:plugin_alaxos:components:alaxosaccessmanagercomponent [2010/08/24 21:46]
nico créée
tips_informatiques:programmation:php:plugin_alaxos:components:alaxosaccessmanagercomponent [2010/08/24 00:00] (Version actuelle)
Ligne 1: Ligne 1:
 ====== AlaxosAccessManagerComponent ====== ====== AlaxosAccessManagerComponent ======
 +
 +
 +
 +===== Une alternative à l'​utilisation de Auth + ACL =====
 +
 +
 +
 +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, ...).
 +
 +
 +
 +
 +===== Authentification =====
 +
 +
 +//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,​
 +
 +  * l'​utilisateur doit se trouver en session sous la constante //​LOGGED_USER//​. ​
 +  * le ou les rôles de l'​utilisateur doivent se trouver en session sous la constante LOGGED_USER_ROLES de l'​utilisateur
 +
 +<code php>
 +$logged_user = $this->​Session->​read(LOGGED_USER);​
 +
 +foreach ($logged_user[LOGGED_USER_ROLES] as $role)
 +{
 + (...)
 +}
 +</​code>​
 +
 +
 +
 +
 +===== Utilisation =====
 +
 +
 +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:​
 +
 +<code php>
 +/* 
 +* 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);
 +</​code>​
 +
 +**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:​
 +
 +<code php>
 +/* 
 +* 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);
 +</​code>​
 +
 +
 +**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
 +
 +
 +
 +
 +
 +===== Remarque =====
 +
 +
 +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 
  
tips_informatiques/programmation/php/plugin_alaxos/components/alaxosaccessmanagercomponent.1282679190.txt.gz · Dernière modification: 2010/08/24 00:00 (modification externe)