Bonjour,
J'ai suivi le tutoriel de grafikart sur les ACL et j'ai finalement préféré suivre le book partie 1 et 2 pour mettre en place mon ACL.
La mise en place s'est bien déroulée, mais lorsque je ne suis pas logguer, j'ai eu des interdictions sur toutes mes pages. Il m'a fallut rajouté dans mon appcontroller des autorisations dans le beforfilter sur presque toute les pages :
<?php
App::uses('Controller', 'Controller');
class AppController extends Controller {
public $components = array('Acl', 'Session',
'Auth' => array(
'authenticate' => array(
'Form' => array(
'scope' => array('User.active' => 1) /*autorise si actif*/
)
)));
public $helpers = array('Html', 'Form', 'Text', 'Session', 'Cache');
public function beforeFilter() {
//Configure AuthComponent
$this->Auth->loginAction = array('controller' => 'users', 'action' => 'login', 'admin' => false);/*ok*/
$this->Auth->logoutRedirect = array('controller' => 'pages', 'action' => 'index', 'slug'=>'accueil');/*ok*/
$this->Auth->loginRedirect = array('controller' => 'users', 'action' => 'index');
if ($this->name=='Pages'){
$this->Auth->allow();
}
if ($this->name=='Posts'){
$this->Auth->allow();
}
if ($this->name=='Menus'){
$this->Auth->allow();
}
if ($this->name=='Users'){
$this->Auth->allow('signup');
}
if ($this->name=='Contact'){
$this->Auth->allow();
}
if ($this->name=='Media'){
$this->Auth->allow();
}
}
function beforeRender() {
if(isset($this->params'prefix']) && $this->params'prefix'] == 'admin') {
$this->layout = 'admin';
} else {
$this->layout = 'default';
}
}
}
}
Je voulais savoir si c'était normal ? J'ai l'impression que je ne protège pas mon site avec cette méthode.
Pour information : je voudrais organiser mon site pour créer des groupe Administrateur, utilisateurs, rédacteurs qui ont des accès différents à la partie admin et un groupe membre, n'ayant pas accès à l'administration.
J'ai aussi oublié de dire que j'ai un problème de sécurité sur mon espace admin. Si dans la barre de navigation je tape /admin/* -> j'accède a mon administration avec un erreur qui stipule que le controler * n'existe pas.
salut, le plus simple avec les ACL, c'est d'autorisé les actions dans chaques contrôler pour les actions que tu autorise au personne non connecté.
public function beforeFilter() {
parent::beforeFilter();
$this->Auth->allow('index','view','login','register');
}
ensuite pour les droits selon les groupes j'utilise personnellement un plugin qui rend les choses plus simple:
http://www.alaxos.net/blaxos/pages/view/plugin_acl_2.0
je le trouve parfais pour gérer les droit par groupes, ou utilisateurs, mais aussi mettre a jour le AROS et ACROS sous cakePHP