Welcome to the Cookbook

loading...

5.1.2 Définir les permissions : ACL de Cake basées sur des fichiers INI

La première implémentation d'ACL sur Cake était basée sur des fichiers INI stockés dans l'installation de Cake. Bien qu'elle soit stable et pratique, nous recommandons d'utiliser plutôt les solutions d'ACL basées sur les bases de données, surtout pour leur capacité à créer de nouveaux ACOs et AROs à la volée. Nous recommandons son utilisation dans de simples applications - et spécialement pour ceux qui ont une raison plus ou moins particulière de ne pas vouloir utiliser une base de données.

Par défaut, les ACL de CakePHP sont gérés par les bases de données. Pour activer les ACL basés sur les fichiers INI, vous devez dire à CakePHP quel système vous utilisé en mettant à jour les lignes suivantes dans app/config/core.php

// Changer ces lignes :
Configure::write('Acl.classname', 'DbAcl');
Configure::write('Acl.database', 'default');

// Pour qu'elles ressemblent à çà :
  Configure::write('Acl.classname', 'IniAcl');
//Configure::write('Acl.database', 'default');
  1. // Changer ces lignes :
  2. Configure::write('Acl.classname', 'DbAcl');
  3. Configure::write('Acl.database', 'default');
  4. // Pour qu'elles ressemblent à çà :
  5. Configure::write('Acl.classname', 'IniAcl');
  6. //Configure::write('Acl.database', 'default');

Les permissions des ARO/ACO sont spécifiées dans /app/config/acl.ini.php. L'idée de base est que les AROs qui sont spécifiés dans une section INI qui a trois propriétés : groups, allow et deny.

  • groups : nom du groupe dont l'ARO est membre.
  • allow : nom des ACOs auxquels l'ARO a accès.
  • deny : nom des ACOs auxquels l'ARO ne devrait pas avoir accès.

Les ACOs sont spécifiés dans des sections INI qui incluent seulement les propriétés allow et deny.

Par exemple, voyons à quoi la structure ARO de la Communauté que nous avions façonnée pourrait ressembler dans une syntaxe INI :

;-------------------------------------
; Les AROs
;-------------------------------------
[aragorn]
groups = guerriers
allow = diplomatie

[legolas]
groups = guerriers

[gimli]
groups = guerriers

[gandalf]
groups = magiciens

[frodo]
groups = hobbits
allow = anneau

[bilbo]
groups = hobbits

[merry]
groups = hobbits
deny = biere

[pippin]
groups = hobbits

[gollum]
groups = visiteurs

;-------------------------------------
; Groupe de l'ARO
;-------------------------------------
[guerriers]
allow = armes, biere, porc_sale

[magiciens]
allow = porc_sale, diplomatie, biere

[hobbits]
allow = biere

[visiteurs]
allow = porc_sale

Maintenant que vous avez défini vos permissions, vous pouvez passer à la section sur la vérification des permissions utilisant le composant ACL.