Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

Je cherche à centraliser dans bootstrap les actions/controllers auxquels les utilisateurs de mon site peuvent accéder en fonction de leur rang.
Je précise que je ne souhaite pas utiliser les ACL car trop lourd à mettre en place et dans mon cas les authorizations n'évolueront pas trop.
J'ai donc déclaré un tableau dans bootstrap.php qui ressemble à cela:

Configure::write('allow',array(
                    "Users"=>array("connectAs"=>array("0"=>True,
                                                      "1"=>True,    
                                                        ),
                                    "voir"=>array("0"=>True,
                                                      "1"=>True,    
                                                        ),
                                    "changePassword"=>array("0"=>True,
                                                      "1"=>True,    
                                                        ),
                                    "recruter"=>array("1"=>True),
                                    "index"=>array("1"=>True),
                                    "edit"=>array("1"=>True),
                                    "add"=>array("1"=>True)                                         
                                    ),
                    "Annonces"=> array("remonte"=>array("0"=>True,
                                                      "1"=>True,
                                                      "2"=>True,
                                                      "3"=>True,
                                                      )
                                ),
                    "Trainings"=> array(                                    
                                    "index"=>array("1"=>True),
                                    "view"=>array("1"=>True),
                                    "add"=>array("1"=>True),
                                    "edit"=>array("1"=>True),
                                    "delete"=>array("1"=>True)
                                    ),

Et dans le beforeFilter du AppController j'autorise ou pas l'action:

    public function beforeFilter(){
        if (empty($this->request->params['requested']) and Configure::read("enable_action_filter")==True) {

            if(!in_array($this->action,array("login","logout",'','home')))
            //if($this->action != "login" or $this->action != "logout")
            {

                $usr=$this->Session->read('Auth.User');
                if(isset($usr))
                {

                    $allows = Configure::read("allow");
                    $admin = $this->Session->read('Auth.User.admin');
                    $rang = $this->Session->read('Auth.User.rang');

                    if($admin!=true)
                    {

                        if(!isset($allows[$this->name][$this->action]))
                        {
                                //debug("here");die();
                                $this->Session->setFlash('Désolé vous ne pouvez pas accéder à cette fonctionnalité','notif',array("type"=>"error"));
                                $this->redirect("/");
                                $this->render(false);
                                debug("ici");
                        }
                        else
                        {
                            if(!isset($allows[$this->name][$this->action][$rang]))
                            {
                                $this->Session->setFlash('Désolé vous ne pouvez pas accéder à cette fonctionnalité','notif',array("type"=>"error"));
                                //$this->redirect("/");
                                $this->render(false);
                                debug("ici2");
                            }
                        }
                    }
                }
            }

        }

    }

Ce que j'obtiens

Ca fonctionne bien en terme d'interdiction des actions, par contre mon site mouline beaucoup plus... alors que je suis en local.
Des que je désactive ce mode de filtre, les pages s'affichent bcp plus rapidement...

avez vous une idée ?

Merci d'avance, bonne journée

Aucune réponse