Essaye ceci Comme dans la doc:
Bonjour,
J'ai créer une administration pour mon site web, Je veux seulement que les utilisateurs qui ont le role "admin" ont accès à l'administration.
J'ai fait un AppController dans un dossier admin :
src -> controller -> admin -> AppController
J'ai cette stucture dans mon fichier AppController :
Le problème est que les membre qui ne sont pas admin on accès à l'administration. Je veux les bloqué l'accès car leurs compte n'a pas le role admin.
Merci
16 réponses
Bonjour.
Dis moi, c'est quoi ça ?
Tu ne peux pas faire étendre ta classe active par celle-ci.
Fais plutôt :
Ce qui aura pour effet de l'étendre du controller du core de CakePHP.
Par contre, si tu veux l'étendre de ton AppController qui se situe dans src/Controller/, tu peux faire dans ce cas là par exemple :
@Lartak : J'ai des controllers qui sont src/Controller/Admin/
C'est pour ça que j'ai fait un appController pour sécurisé l'accès à ces controller. c'est seulement les utilisateur qui sont role admin qui ont accès.
Sauf que là, tu fais appel au controller actuel.
C'est le controller AppController qui est dans le prefix Admin.
En utilisant une l'une de tes deux solution. Quest que je fait quand l'utilisateur n'est pas connecter. Il me redireige admin/users/login et moi je veux qui le redirige vers users/login. La page que tout les utilisateur ce connecte.
J'ai mondifier
Il faut surement que je recharge le composant Auth
J'ai faite une fonction isAuthorized();
Qui vérifie si l'utilisateur est connecté et qui il a le role admin
La fonction ne fonctionne pas.
Dans le composant Auth, tu peux ajouter dans loginAction:
Soit :
J'ai ajouté le prefix = false dans loginAction et ça ne fonctionne pas.
En fait la fonction initialize(); n'est même pas appeller tout mon code ne fonctionne pas
Est-ce que je fait pas la bonne façons pour créer une administration sur cakphp 3?
Tu veux bien reposter le contenu de ton Controller, c'est un peu dur de savoir où tu en es ...
@antograssiot Voici où je suis rendu dans mon appController :
Et avec (dans ton loginRedirect) un 'admin'=> fasle à la place du prefix ça donne quoi?
@BenFarhat Cela est normalement inutile dans Cake 3 il me semble.
@musicalitymaker Je ne peux pas tester ton code pour le moment mais montre un exemple de Controller dans ta partie Admin ainsi que tes routes. Le beforeFilter devrait envoyer une erreur car il attend un Cake\Event\Event en parametre ce qui me fait dire que cet AppController n'est pas utilisé...
@antograssiot J'ai mis un beforeFilter(); ne retourne même pas d'erreur et qui'il devrais y avoir une erreur. Je pense que mes autres controllers (PostsController, Tracks,Controller) ne sont pas correctement attacher à AppController de mon administration.
Merci j'ai trouver le bug
Dans mon tout mes controller il faut qu'il charge le bon appController
par :
Petite oublie de ma part.
As-tu pensé à ajouter ton prefix dans le routing ?
@Lartak: Oui j'ai ajouté le prefix dans le routing et ça me redirige bien à la bonne action. Je n'est plus d'erreur tout fonctionne très bien.