1
0
Fork 0
mirror of https://github.com/wallabag/wallabag.git synced 2025-09-15 18:57:05 +00:00

Merge pull request #4325 from wallabag/fix-paywall-import-cron

Added authentication during import command for paywalled websites
This commit is contained in:
Kevin Decherf 2020-04-13 18:27:52 +02:00 committed by GitHub
commit 2b21cc8869
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -8,6 +8,7 @@ use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
class ImportCommand extends ContainerAwareCommand class ImportCommand extends ContainerAwareCommand
{ {
@ -38,15 +39,25 @@ class ImportCommand extends ContainerAwareCommand
$em->getConnection()->getConfiguration()->setSQLLogger(null); $em->getConnection()->getConfiguration()->setSQLLogger(null);
if ($input->getOption('useUserId')) { if ($input->getOption('useUserId')) {
$user = $em->getRepository('WallabagUserBundle:User')->findOneById($input->getArgument('username')); $entityUser = $em->getRepository('WallabagUserBundle:User')->findOneById($input->getArgument('username'));
} else { } 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'))); 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')) { switch ($input->getOption('importer')) {
case 'v2': case 'v2':
$import = $this->getContainer()->get('wallabag_import.wallabag_v2.import'); $import = $this->getContainer()->get('wallabag_import.wallabag_v2.import');