X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2FWallabag%2FCoreBundle%2FHelper%2FRedirect.php;h=f78b7fe0d8b0799879489ec3e48e223b480e1ca3;hb=68cb89a5161351dd730871fc834bf147204a2a07;hp=0921c3f9e686dcba07eaace5d48391abf922410b;hpb=af497a641c2a46c99bbc67215e041a46c91695bc;p=github%2Fwallabag%2Fwallabag.git diff --git a/src/Wallabag/CoreBundle/Helper/Redirect.php b/src/Wallabag/CoreBundle/Helper/Redirect.php index 0921c3f9..f78b7fe0 100644 --- a/src/Wallabag/CoreBundle/Helper/Redirect.php +++ b/src/Wallabag/CoreBundle/Helper/Redirect.php @@ -3,14 +3,21 @@ namespace Wallabag\CoreBundle\Helper; use Symfony\Component\Routing\Router; +use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; +use Wallabag\CoreBundle\Entity\Config; +/** + * Manage redirections to avoid redirecting to empty routes. + */ class Redirect { private $router; + private $tokenStorage; - public function __construct(Router $router) + public function __construct(Router $router, TokenStorageInterface $tokenStorage) { $this->router = $router; + $this->tokenStorage = $tokenStorage; } /** @@ -21,16 +28,24 @@ class Redirect */ public function to($url, $fallback = '') { - $returnUrl = $url; - - if (null === $url) { - if ('' !== $fallback) { - $returnUrl = $fallback; - } else { - $returnUrl = $this->router->generate('homepage'); - } + $user = $this->tokenStorage->getToken() ? $this->tokenStorage->getToken()->getUser() : null; + + if (null === $user || !is_object($user)) { + return $url; + } + + if (Config::REDIRECT_TO_HOMEPAGE === $user->getConfig()->getActionMarkAsRead()) { + return $this->router->generate('homepage'); + } + + if (null !== $url) { + return $url; + } + + if ('' === $fallback) { + return $this->router->generate('homepage'); } - return $returnUrl; + return $fallback; } }