Hey :)

Tout d'abords d'avance, désolé pour la création de ce post (il y en a beaucoup sur les ACL) mais dans mon cas je suis bloqué, j'essaye de comprendre un maximum mais impossible d'initialisé correctement la classe ACL .

Ce qui est bien et qui marche :

  • Je peux me connecté, me déconnecté .
  • Quand je ne suis pas connecté, je peux bien accédé à la page d'accueil, les routes sont ok je pense .

J'ai configuré le route Admin, avec Auth j'ai aucun soucis (sauf que tout le monde peux y accédé du coup ^^) .
La route Admin renvoie sur la vue admin_index du controller User (ce que je veux en attendant que je fasse un beau dashboard) .

J'essaye ACL, avec un User (CREAZ qui appartient au groupe 1 => Admin) .

Quand je tape http://127.0.0.1/ACL/admin, je tombe sur http://127.0.0.1/ACL/users/login (OK)
Je me connecte avec mon compte admin, cela me renvoie sur l'accueil (je préfèrerais directement sur l'admin pour le groupe 1 /admin et les autres renvoie sur l'accueil) .

Une fois connecté, je tape http://127.0.0.1/ACL/admin et ...

Missing Controller

Error: ACLController could not be found.

Error: Create the class ACLController below in file: app\Controller\ACLController.php

Que faire ? ^^

Merci de votre aide

UsersController :

<?php
App::uses('AppController', 'Controller');
class UsersController extends AppController {

   public function beforeFilter() {
    parent::beforeFilter();
    $this->Auth->allow('initDB');
    }
    public function initDB() {
    $group = $this->User->Group;
    // Pour les admins
    $group->id = 1;
    $this->Acl->allow($group, 'controllers');
    // Permet aux utilisateurs classiques de se déconnecter
    $this->Acl->allow($group, 'controllers/users/logout');
}
   public function login() {
        if ($this->Auth->login()) {
            $this->redirect($this->Auth->redirect());
        } else {
            $this->Session->setFlash(__('Invalid username or password, try again'));
        }
    }
    public function logout() {
    $this->Session->destroy();
    $this->redirect($this->Auth->logout());
    }

    function admin_index()
    {
    $this->User->recursive = 0;
    $this->set('users', $this->paginate());
    }
}
?>

routes.php

* Here, we are connecting '/' (base path) to controller called 'Pages',
 * its action called 'display', and we pass a param to select the view file
 * to use (in this case, /app/View/Pages/home.ctp)...
 */
    Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
/**
 * ...and connect the rest of 'Pages' controller's URLs.
 */
    Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));
    Router::connect('/admin', array('controller' => 'users', 'action' => 'index', 'prefix' => 'admin'));

AppController

<?php
class AppController extends Controller {
    public $components = array(
        'Acl',
        'Auth' => array(
            'authorize' => array(
                'Actions' => array('actionPath' => 'controllers')
            )
        ),
        'Session'
    );
    public $helpers = array('Html', 'Form', 'Session');
    public function beforeFilter() {
        //Configure AuthComponent
        $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
        $this->Auth->logoutRedirect = array('controller' => 'users', 'action' => 'login');
        $this->Auth->loginRedirect = array('controller' => 'pages', 'action' => 'display', 'home');

        if(isset($this->params'prefix']) && $this->params'prefix'] == 'admin')
        {
        $this->layout = 'admin_default';
        }
    }

}
?>

PagesController

public function beforeFilter() {
    parent::beforeFilter();
    // On rend accessible la page home
    $this->Auth->allow(array('controller' => 'pages', 'action' => 'display', 'home'));
    }

    public function display() {
        $path = func_get_args();
        $count = count($path);
        if (!$count) {
            return $this->redirect('/');
        }
        $page = $subpage = $title_for_layout = null;
        if (!empty($path[0])) {
            $page = $path[0];
        }
        if (!empty($path[1])) {
            $subpage = $path[1];
        }
        if (!empty($path$count - 1])) {
            $title_for_layout = Inflector::humanize($path$count - 1]);
        }
        $this->set(compact('page', 'subpage', 'title_for_layout'));
        try {
            $this->render(implode('/', $path));
        } catch (MissingViewException $e) {
            if (Configure::read('debug')) {
                throw $e;
            }
            throw new NotFoundException();
        }
    }
}

User.php (Modèle)

<?php
App::uses('AuthComponent', 'Controller/Component');
class User extends AppModel {

    public $belongsTo = array('Group');
    public $actsAs = array('Acl' => array('type' => 'requester'));
    public function parentNode() {
        if (!$this->id && empty($this->data)) {
            return null;
        }
        if (isset($this->data'User']'group_id'])) {
            $groupId = $this->data'User']'group_id'];
        } else {
            $groupId = $this->field('group_id');
        }
        if (!$groupId) {
            return null;
        } else {
            return array('Group' => array('id' => $groupId));
        }
    }
    public function beforeSave($options = array()) {
        $this->data'User']'password'] = AuthComponent::password($this->data'User']'password']);
        return true;
    }
}
?>

1 réponse


CREAZ
Auteur

Personne :( ^^ ?