Bonjour,

D'abord je voulais remercier grafikart pour son tuto sur cakephp.

Alors voila je vous explique mon problème, on peut accéder à l'interface admin de mon site, enfin au thème plutôt car j'ai un thème différent pour la partie admin.
Seulement on ne peut rien modifier se qui et déjà un bon point sinon sa nous renvois sur la page de connexion, mais sais quant même embêtant qu'on puisse voir ma partie admin, j'ai essayer par tous les moyens de corriger cette faille sans sucée.

Pour faire plus simple j'ai mis un petite partie de mon site en ligne pour vous montrez :
Aller sur http://infozone62.fr/ puis si vous essayer d'aller sur http://infozone62.fr/admin/dashboard c'est la que le problème viens.
Seulement le soucis, c'est que /admin/dashboard n'est même pas le bon liens ! Normalement il c'est dashboards avec un "s" à la fin pour accéder à la partie admin, quant on mais le "s" sa fonctionne correctement et nous redirige vers la page de login...
Puis même si on essaye d'accéder a une autre pages de la partie admin sa fonctionne aussi par exemple admin/pages
C'est juste ce admin/dahsboard qui merde :/

Si vous avez besoin d'un bout de code en particulier je vous le donnerais, je vous remercie de votre aide ! :)

3 réponses


ben62224
Auteur

Non non rien a voir avec le cache j'ai tester sur plusieurs navigateur, oui on tombe bien sur une page erreur 404 mais sa affiche le thème admin aussi, alors que sa devrais afficher la 404 de mon site principale

Pourrait-on voir le code de ton AppController, DashboardsController, ainsi que ton routes.php ?
Si tu utilise le système de prefixe, je pense que tout ce que tu as a faire et de t'assurer que ta methode index du controller Dashboards et prefixer par admin :

<?php
class AppController extends Controller
{
    public function isAuthorized($user)
    {
        if(isset($this->request->params'prefix']) && $this->request->params'prefix'] != $user'role'])
        {
            return false;
        }
    }
}
class DashboardsController extends AppController 
{
    public function admin_index()
    {
        // Sera proteger grace au isAuthorized
    }
}
?>
ben62224
Auteur

Alors voici mon code de DashboardsController :

<?php
class DashboardsController extends AppController {
public $components = array('Security');
    public $uses = array('Transaction');

    /**
    * Index
    **/
    function admin_index(){
        // Total prix
        $price = $this->Transaction->find('all', array(
            'fields' => array('SUM(Transaction.price) AS `price`'),
        ));
        $total_price = $price[0][0]'price'];
        // Indexer transaction
        $d'transactions'] = $this->Paginate('Transaction');
        $this->set($d); 

    }
    /**
    * Lecture transaction
    **/
    function admin_view($id){
        if($this->request->is('put') || $this->request->is('post')){
            if($this->Transaction->save($this->request->data)){
                $this->Session->setFlash("La transaction a bien été modifié.","notif");
                $this->redirect(array('action'=>'index'));          
            }
        }elseif($id){
            $this->Transaction->id = $id;
            $this->request->data = $this->Transaction->read();
        }else{
            $this->request->data = $this->Transaction->getDraft('dashboard');
        }
    }
    /**
    * Suppression transaction
    **/
    function admin_delete($id){
        $this->Transaction->delete($id);
        $this->Session->setFlash("La transaction a bien été supprimé.","notif");
        $this->redirect($this->referer());
    }
}

AppController :

<?php
class AppController extends Controller {
    public $helpers = array('Text','Form','Html','Session','Cache','Date');
    public $components = array('Session','Cookie','Auth' => array(
        'authenticate' => array(
            'Form' => array(
                'scope' => array('User.active' => 1)
            )
        )
    ));
    function beforeFilter(){
        $this->Auth->loginAction = array('controller'=>'users','action'=>'login','membre'=>false,'admin'=>false);
        $this->Auth->authorize = array('Controller');
        if(!isset($this->request->params'prefix'])){
        $this->Auth->allow();
        }
        if(isset($this->request->params'prefix']) && $this->request->params'prefix'] == 'admin'){
            $this->layout = 'admin';
        }
    }
    function isAuthorized($user){
        if(!isset($this->request->params'prefix'])){
            return true;
        }
        $roles = array(
            'admin' => 10,
            'membre' => 5
        ); 
        if(isset($roles$this->request->params'prefix']])){
            $lvlAction = $roles$this->request->params'prefix']];
            $lvlUser = $roles$user'role']]; 
            if($lvlUser >= $lvlAction){
                return true;
            }else{
                return false; 
            }
        }
        return false; 
    }
}

Et les routes :

/ **Accueil** /
    Router::connect('/', array('controller' => 'pages', 'action' => 'page_list', 'accueil'));
    / **Blog** /
    Router::connect('/blog', array('controller' => 'posts', 'action' => 'index'));
    Router::connect('/blog/:slug-:id', array('controller' => 'posts', 'action' => 'show'),array('pass'=> array('id','slug'), 'id'=>'[0-9]+','slug'=>'[a-z0-9\-]+'));
    Router::connect('/blog/:slug',array('controller'=>'posts','action'=>'category'),array('pass'=> array('slug'),'slug' =>'[a-z0-9\-]+'));
    Router::connect('/blog/tag/*',array('controller'=>'posts','action'=>'tag'),array('pass'=> array('name'),'name' =>'[a-z0-9\-]+'));
    Router::connect('/blog/*', array('controller' => 'posts', 'action' => 'index'));
    / **Page** /
    Router::connect('/contact', array('controller' => 'pages', 'action' => 'contact'));
    Router::connect('/membre/login', array('controller' => 'users', 'action' => 'login'));
    Router::connect('/membre/inscription', array('controller' => 'users', 'action' => 'signup'));
    Router::connect('/membre/oublie', array('controller' => 'users', 'action' => 'password'));
    Router::connect('/membre/compte', array('controller' => 'users', 'action' => 'edit'));
    Router::connect('/membre/deconnexion', array('controller' => 'users', 'action' => 'logout'));
    Router::connect('/depannage/paiement', array('controller' => 'users', 'action' => 'paiement'));
    Router::connect('/depannage/valide', array('controller' => 'paiements', 'action' => 'valide'));
    Router::connect('/:slug', array('controller' => 'pages', 'action' => 'page_list'),array('pass'=> array('slug'),'slug' =>'[a-z0-9\-]+'));

Je pense que cela viens de mais routes