Donc voila mon souci, j'ai crée tout un panel admin grâce au routes intégrer dans cake

Configure::write('Routing.prefixes', array('admin'));

et j'ai créer mon acl comme sur le tutoriel du cookbook

http://book.cakephp.org/2.0/en/tutorials-and-examples/simple-acl-controlled-application/simple-acl-controlled-application.html

Mais lorsque je veux accéder à mon panel admin alors que je suis connecté avec toutes les permissions
il me redirige, automatiquement vers ma page display

Y'a t'il quelque chose à faire en plus pour que les utilisateurs puissent y accéder.

Merci

3 réponses


Ch0c4
Auteur
Réponse acceptée

Bon j'ai fait quelque chose de pas très catho, j'ai fait un test d'admin dans le appcontroller, si j'ai les autorisations nécessaire j'ai le droit à toutes les actions sinon non.

if(($this->Session->read('Auth.User.role_id') == '1') || ($this->Session->read('Auth.User.role_id') == '2') || ($this->Session->read('Auth.User.role_id') == '3')){
            $this->Auth->allow('*');
        } else{
            $this->Auth->allow('display', 'index', 'show', 'add', 'login', 'logout');
        }
Ch0c4
Auteur

Bon mise à jour, rien a voir avec les routes, c'est plus un problème de compréhension de acl quand je met

$this->Auth->allow('*');

dans le AppController, tout le monde peut accéder à toutes les pages, pour l'instant c'est logique.

Mais si je veux que seul les administrateurs accèdent au panel admin et tous les autres juste au page index et show de mon site
je devrais écrire juste sa

$this->Auth->allow('index', 'show');

dans mon Appcontroller non ?

Mais la je vois pas la logique.

Ch0c4
Auteur

Bon je suis toujours au même point, c'est à dire que je peux pas accéder à mon panel admin en tant que administrateur du site
c'est à dire que je peux accéder à toutes les pages sauf /site/admin/posts et tous les autres, faut'il que j'ajoute une entrée à mon initDB. Je ne vois pas comment faire. Voila mon initDB.

public function initDB(){
        $role = $this->User->Role;

        $role->id = 1;
        $this->Acl->allow($role, 'controllers');
        $role->id = 2;
        $this->Acl->allow($role, 'controllers');

        $role->id = 3;
        $this->Acl->allow($role, 'controllers');

        $role->id = 4;
        $this->Acl->allow($role, 'controllers/Posts/index');
        $this->Acl->allow($role, 'controllers/Posts/show');
        $this->Acl->allow($role, 'controllers/Users/index');
        $this->Acl->allow($role, 'controllers/Users/show');
        $this->Acl->allow($role, 'controllers/Users/edit');
        $this->Acl->allow($role, 'controllers/Comments/index');
        $this->Acl->allow($role, 'controllers/Comments/add');
        $this->Acl->allow($role, 'controllers/Comments/edit');

        $role->id = 5;
        $this->Acl->allow($role, 'controllers/Posts/index');
        $this->Acl->allow($role, 'controllers/Posts/show');
        $this->Acl->allow($role, 'controllers/Users/index');
        $this->Acl->allow($role, 'controllers/Users/show');
        $this->Acl->allow($role, 'controllers/Users/edit');
        $this->Acl->allow($role, 'controllers/Comments/index');
        $this->Acl->allow($role, 'controllers/Comments/add');
        $this->Acl->allow($role, 'controllers/Comments/edit');
        echo "Fini";
        exit;
    }

Je sais qu'il y a beaucoup de chose similaire mais c'est pour me repérer.

Merci de votre réponse.