Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
j'aimerai privatisé l'accès à un module de mon site.
J'entends par là que l'utilisateur doit être identifié pour accéder à ce module.
j'utilise le ZfcUser pour authentification.
J'ai donc commencé à tester dans chaque action de chaque contrôleur si l'utilisateur est identifié mais je trouve ça assez lourd à faire surtout que j'ai beaucoup de contrôleurs et d’actions.
Puisque le module entier est privé ,n'y a-t-il un moyen plus simple de faire ?
Merci
Hors ligne
Salut tu dois pouvoir faire ça avec des ACLs le module RBAC de Spiffy le fait. Je ne l'ai pas testé mais si ton module est accessible via une route tu peux bloquer l'accès à la route mère et on en parle plus
Hors ligne
Bonjour,
tu peu utiliser la fonction dispatch de ton controler.
Elle s'exécutera au début de chacune de tes actions dans ce controleur
tu peu faire un truc du type:
public function dispatch(Request $request, Response $response = null) { //$CheckIdentify = false; $CheckIdentify->checkIsIdentify(); if(!$CheckIdentify) return $this->redirect()->toUrl('/my-redirect-url'); return parent::dispatch($request, $response); }
Après je crois qu'il existe une manière de dire à ton application de ne pas charger certains modules mais je ne pourrais pas t'aider la dessus.
Hors ligne
merci pour vos réponses.
J'ai mis en place mon test sur la fonction dispatch et ça fonctionne très bien.
Par contre, il faut le faire le test dans tous les controller mais c'est toujours mieux que toutes les actions.
Je vais voir si j'ai le temps de regarder un peu RBAC.
Merci
Hors ligne
Si tu souhaites utiliser la fonction dispatch tu peux créer un contrôleur global que tes contrôleurs vont étendre. De cette façon tu le code qu'une seule fois. En contrepartie tu vas devoir faire un test supplémentaire pour tester la route pour éviter de rediriger sur toute l'application.
Hors ligne
oui j'y ai pensé aussi finalement et c'est ce que j'ai fait. J'ai crée un AbstractController, avec le dispatch dedans, dont vont hériter tous les contrôleurs du module.
Je renvoi une 403 si l'utilisateur n'est pas logguer.
merci
Hors ligne