From 607e1a1a13d0aaf625ff760aa094f970f2924757 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Sat, 11 Apr 2020 14:01:00 +0200 Subject: [PATCH] Added authentication during import command for paywalled websites --- .../ImportBundle/Command/ImportCommand.php | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/Wallabag/ImportBundle/Command/ImportCommand.php b/src/Wallabag/ImportBundle/Command/ImportCommand.php index f9ffe994d..26903e9cb 100644 --- a/src/Wallabag/ImportBundle/Command/ImportCommand.php +++ b/src/Wallabag/ImportBundle/Command/ImportCommand.php @@ -8,6 +8,7 @@ use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; class ImportCommand extends ContainerAwareCommand { @@ -38,15 +39,25 @@ class ImportCommand extends ContainerAwareCommand $em->getConnection()->getConfiguration()->setSQLLogger(null); if ($input->getOption('useUserId')) { - $user = $em->getRepository('WallabagUserBundle:User')->findOneById($input->getArgument('username')); + $entityUser = $em->getRepository('WallabagUserBundle:User')->findOneById($input->getArgument('username')); } else { - $user = $em->getRepository('WallabagUserBundle:User')->findOneByUsername($input->getArgument('username')); + $entityUser = $em->getRepository('WallabagUserBundle:User')->findOneByUsername($input->getArgument('username')); } - if (!\is_object($user)) { + if (!\is_object($entityUser)) { throw new Exception(sprintf('User "%s" not found', $input->getArgument('username'))); } + // Authenticate user for paywalled websites + $token = new UsernamePasswordToken( + $entityUser, + null, + 'main', + $entityUser->getRoles()); + + $this->getContainer()->get('security.token_storage')->setToken($token); + $user = $this->getContainer()->get('security.token_storage')->getToken()->getUser(); + switch ($input->getOption('importer')) { case 'v2': $import = $this->getContainer()->get('wallabag_import.wallabag_v2.import');