Bonsoir,
Je me suis mis à utiliser le framework CakePHP depuis peu et je bloque sur l'authentification malgré que j'ai consulté la documentation. :s
J'ai crée un controlleur général qui utilise le components Auth et j'ai limité l'accès à l'édition de news, mais si un visiteur s'inscrit à l'aide du formulaire sur la page d'accueil, il aura autant de droit que l'administrateur.
Comment faire en sorte que certains utilisateurs ne puissent pas accéder à l'espace d'administration ?
Merci ! :D
il faut créer un champ statut dans la table membres et plus le membre a des droits, plus il doit avoir un statut élevé, ensuite tu vérifie si $this->Session->read('Auth.Membre.statut') > $statutMinimum alor sil a le doit d'accès sinon il est redirigé
tu peux aussi utiliser les ACL (il y a un tuto ici même) mais c'est un peu plus compliqué et moi ca n'a pas marché, il faudra que je le reprenne :)
les fonctions qui commencent par admin_ sont réservées par cake et ont un mode de fonctionnement spécial mais je ne sais pas comment on les utilise tu peux regarder la doc par contre, pour l'autre tu as oublier de fermer la parenthese apres read, voila ce que tu as fait : [code]if($this->Session->read('Auth.users.lvl' >= 1))[/code] et voila ce qu'il faut faire : [code]if($this->Session->read('Auth.Users.lvl') >= 1)[/cide] ce qui se situe apres Auth. c'est le nom du modele, comme tu les utilise dans le contrôleur donc avec une majuscule ;)
Merci de l'astuce !
Cependant j'ai un souci : l'accès est bel et bien bloqué pour les membres mais également pour les administrateurs.
J'ai une idée de la cause mais je ne suis pas sûr du tout étant débutant en POO/MVC. :s
Voilà des exemples d'utilisation qui bloquent l'accès à l'index de l'administration et à une méthode :
function admin_index() {
if ($this->Session->read("Auth.users.lvl" >= 1)) {
} else {
$this->redirect("/");
}
}
function add_post() {
if ($this->Session->read("Auth.users.lvl" >= 1)) {
if (!empty($this->data)) {
if ($this->Post->save($this->data)) {
$this->redirect("/");
}
}
} else {
$this->redirect("/");
}
$this->layout = 'admin_default';
}
Avez-vous une idée? Merci !
Mon modèle s'appelle "User" donc j'ai plutôt mis :
if ($this->Session->read("Auth.User.lvl" >=1))
Maintenant ça fonctionne, merci beaucoup !