Added authentication during import command for paywalled websites

This commit is contained in:
Nicolas Lœuillet 2020-04-11 14:01:00 +02:00
parent 365b3dd21f
commit 607e1a1a13
No known key found for this signature in database
GPG key ID: 3A8718BE51C3BA8E

View file

@ -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');