share(function (PhraseaApplication $app) { return (new RootController($app)) ->setFirewall($app['firewall']) ; }); } public function boot(Application $app) { // no-op } public function connect(Application $app) { $controllers = $this->createCollection($app); $controllers->before([$this, 'redirectOnLogRequests']); $controllers->before('controller.prod:assertAuthenticated'); $controllers->get('/', 'controller.prod:indexAction') ->bind('prod'); return $controllers; } public function redirectOnLogRequests(Request $request, PhraseaApplication $app) { if (!$request->query->has('LOG')) { return null; } if ($app->getAuthenticator()->isAuthenticated()) { $app->getAuthenticator()->closeAccount(); } /** @var Token $token */ $token = $app['repo.tokens']->findValidToken($request->query->get('LOG')); // actually just type user-relance can access here with token // PHRAS-3694 if (null === $token || $token->getType() != TokenManipulator::TYPE_USER_RELANCE) { $app->addFlash('error', $app->trans('The URL you used is out of date, please login')); return $app->redirectPath('homepage'); } /** @var Token $token */ $app->getAuthenticator()->openAccount($token->getUser()); return $app->redirectPath('prod'); } }