Bonjour a tous!
J'ai sécurisé mon backoffice avec le composent Auth, jusque la pas très compliqué. L truc bizarre c'est qu'il ne protège pas les pages statiques. J'aimerais que mes pages admin_page.ctp soit protégé or avec le prefixe admin, il cherche le controller adminController.php.
Logiquement je me suis dit qu'une fonction admin_display() dans le controller pages pouvait régler le problème mais non.
En bref, j'aimerai simplement que les pages ayant l'url: /admin/pages/ma-page soient protégés et que les pages ayant l'url /pages/ma-page ne le soient pas.
Merci à tous!
Hello,
Suie les tuto de Grafikart, Cakephp jour 4 il me semble. Il te faut un beforefilter dans ton AppController pour gérer ca,
Personnellement je n'utilise pas cette technique, mais j'avais testé :D , le code qu'explique Grafikart ressemble à peut près à celui-ci:
function beforeFilter(){
$this->Auth->loginAction = array('controller'=>'users','action'=>'login','admin'=>false); // Redirige vers "Users"
$this->Auth->authorize = array('Controller');
//$this->Auth->Authenticate // Permet de défnir la méthode d'authentification
if(!isset($this->request->params'prefix'])){ // Vérifie s'il y a un prefix, soit "admin"
$this->Auth->allow(); // l'action va être autorisé
}
if(isset($this->request->params'prefix']) && $this->request->params'prefix'] == 'admin'){
$this->layout = 'admin'; // Si page admin layout :> admin
}
}
function isAuthorized($user){
if(!isset($this->request->params'prefix'])){
return true;
}
$roles = array(
'admin' => 10,
'plus' => 5,
'membre' => 1
);
$this->set('roles',$roles); // envoie les roles
if(isset($roles$this->request->params'prefix']])){
$lvlAction = $roles$this->request->params'prefix']];
$lvlUser = $roles$user'role']];
// Si l'utilisateur est supérieur au niveau, il a accès
if($lvlUser >= $lvlAction){
return true;
}else{
return false;
}
}
return true;
}
Hésite pas à montrer ton code, c'est plus simple à comprendre ce que tu veux dire. A+
Bonjour et merci pour la réponse !
En fait j'ai pas vraiment de code. Le truc c'est que le composent Auth ne sécurise pas les pages statiques tous simplement parce qu'il y a qu'une seul fonction "display" qui affiche toutes les autres pages.
Finalement j'ai réussi à organisant différemment. J'ai crée carrément un controller et un model pour La documentation et j'ai crée une fonction admin_dashbord() pour qu'il soit prit en compte par le composent Auth.
Voila je laisse ouvert le post au cas ou quelqu'un sait comment faire sans créer de fonction admin_mafonction() dans PagesController().
Merci encore !