Salut tout le monde, alors voila j'ai une page admin protégé. En tant qu'admin je peux y acceder et tout fonctionne correctement cependant si un utilisateur non admin essaye d'acceder à la page admin il a une erreur de type ERR_TOO_MANY_REDIRECTS.

A quoi ceci est du?

Voila mon AppController

class AppController extends Controller {
    public $components = array(
        'Session',
        'DebugKit.Toolbar',
        'Auth' => 
            array(
                'loginRedirect' => array('controller' => 'portfolios', 'action' => 'index'),
                'logoutRedirect' => array('controller' => 'portfolios', 'action' => 'index'),
                'authorize' => array('Controller')
            ) // Ajout de cette ligne
    );

    public function beforeFilter() {
        $this->Auth->allow('index');
    }

  public function isAuthorized($user = null) {
        // Chacun des utilisateur enregistré peut accéder aux fonctions publiques
        if (empty($this->request->params['admin'])) {
            return true;
        }

        // Seulement les administrateurs peuvent accéder aux fonctions d'administration
        if (isset($this->request->params['admin'])) {
            return (bool)($user['role'] === 'admin');
        }

        // Par défaut n'autorise pas
        return false;
    }
}

Voici mon PortfoliosControler

class PortfoliosController extends AppController {

public function isAuthorized($user = null) {
    // Tous les users inscrits peuvent ajouter les posts
    if ($this->action === 'index') {
        return true;
    }

    return parent::isAuthorized($user);
}

    public function admin_index(){
        $this->set('imageData',$this->Portfolio->Find('all',array(
            'fields' => array(
                'Portfolio.id',
                'Portfolio.name',
                'Portfolio.image',
                'Portfolio.description',
                'Portfolio.created',
                'Category.name',
                'Type.name'
                ),
            'order' => array(
                'Portfolio.created DESC'
                )
            )
        ));
    }

    public function index(){
        $this->set('imageData',$this->Portfolio->Find('all',array(
            'fields' => array(
                'Portfolio.id',
                'Portfolio.name',
                'Portfolio.image',
                'Portfolio.description',
                'Portfolio.created',
                'Category.name',
                'Type.name'
                ),
            'order' => array(
                'Portfolio.created DESC'
                )
            )
        ));
    }

}

A noté que si je retire 'authorize' => array('Controller') dans AppController je n'ai plus de problème mais tout les membres peuvent accéder à la partie admin(ce qui est logique ^^).

Merci d'avance.
J'utilise wamp ça ne pourrais pas venir de lui aussi?

4 réponses


gr4ph0s
Auteur

Je me permet de faire un double post pour up le sujet. Désolé mais étant donnée que je souhaite mettre en ligne mon site le plus rapidement possible et que c'est la seule chause qu'il me reste à faire...

Toujours pas d'idée? Ou d'autre fichiers qui vous aiderez a savoir d'où cela pourez venir?

Merci d'avance :)

Bonsoir.
Cette erreur veut dire qu'il y a trop de redirections, pour faire simple, une boucle de redirections.

gr4ph0s
Auteur

Merci de ta réponse. Je l'avais bien compris mais comment la corrigé et surtout d'où cela provient?(mauvaise configuration apache?problème de code?) Pour résumé cela se passe lorsqu'un utilisateur non inscrit tente d'acceder à un contenu nécesitant le droit d'administration.

A priori, l'action de login est celle par défaut.
Sais-tu sur quelle action la boucle de redirection se produit ? (/users/login ?)
Peux-tu accéder à cette action en dehors du cas où tu es redirigé par le AuthComponent ?