Commit 4ddca866 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Amélioration : réponse 403 plutôt que redirection (vers page d'auth) lorsque...

Amélioration : réponse 403 plutôt que redirection (vers page d'auth) lorsque l'utilisateur est connecté.
parent 617d3ef9
Loading
Loading
Loading
Loading
+16 −8
Original line number Diff line number Diff line
@@ -21,15 +21,22 @@ class RedirectionStrategy extends \BjyAuthorize\View\RedirectionStrategy
    {
        $request        = $event->getRequest();
        $router         = $event->getRouter();
        $sl             = $event->getApplication()->getServiceManager();
        $authService    = $sl->get('Zend\Authentication\AuthenticationService'); //'zfcuser_auth_service'
        $unauthStrategy = $sl->get('BjyAuthorize\View\UnauthorizedStrategy'); /* @var $unauthorizedStrategy UnauthorizedStrategy */

        // en cas de requête AJAX, on délègue à la stratégie Unauthorized (revoi d'une réponse 403)
        if ($request->isXmlHttpRequest()) {
            $sl = $event->getApplication()->getServiceManager();
            $unauthorizedStrategy = $sl->get('BjyAuthorize\View\UnauthorizedStrategy'); /* @var $unauthorizedStrategy UnauthorizedStrategy */
            $unauthorizedStrategy->onDispatchError($event);
            return $unauthStrategy->onDispatchError($event);
        }
        
            return;
        // si une identité authentifiée est disponible, pas besoin de se réauthentifier :
        // on délègue donc à la stratégie Unauthorized (réponse 403)
	if ($authService->hasIdentity()) {
	    return $unauthStrategy->onDispatchError($event);
	}
        
        // cuisine nécessaire pour ajouter en paramètre GET l'URL demandée avant redirection vers la page d'authentification
        if (null === $this->redirectUri) {
            if (($uri = $router->getRequestUri()) && $uri->getPath()) { /* @var $uri \Zend\Uri\Uri */
                $this->redirectUri = $router->assemble(array(), array(
@@ -38,6 +45,7 @@ class RedirectionStrategy extends \BjyAuthorize\View\RedirectionStrategy
            }
        }
        
        parent::onDispatchError($event);
        // délégation à la stratégie standard de redirection vers la page d'authentification
        return parent::onDispatchError($event);
    }
}
 No newline at end of file