diff --git a/src/Controller/Import/BrowserController.php b/src/Controller/Import/BrowserController.php index dc1af650d..8cf1bd5ab 100644 --- a/src/Controller/Import/BrowserController.php +++ b/src/Controller/Import/BrowserController.php @@ -2,6 +2,7 @@ namespace Wallabag\Controller\Import; +use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; @@ -14,6 +15,7 @@ abstract class BrowserController extends AbstractController { /** * @Route("/import/browser", name="import_browser", methods={"GET", "POST"}) + * @IsGranted("IMPORT_ENTRIES") * * @return Response */ diff --git a/src/Controller/Import/ChromeController.php b/src/Controller/Import/ChromeController.php index 507221a8a..79a769ca9 100644 --- a/src/Controller/Import/ChromeController.php +++ b/src/Controller/Import/ChromeController.php @@ -4,6 +4,7 @@ namespace Wallabag\Controller\Import; use Craue\ConfigBundle\Util\Config; use OldSound\RabbitMqBundle\RabbitMq\Producer as RabbitMqProducer; +use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; use Symfony\Contracts\Translation\TranslatorInterface; @@ -27,6 +28,7 @@ class ChromeController extends BrowserController /** * @Route("/import/chrome", name="import_chrome", methods={"GET", "POST"}) + * @IsGranted("IMPORT_ENTRIES") */ public function indexAction(Request $request, TranslatorInterface $translator) { diff --git a/src/Controller/Import/DeliciousController.php b/src/Controller/Import/DeliciousController.php index c79d5ca50..f07011c80 100644 --- a/src/Controller/Import/DeliciousController.php +++ b/src/Controller/Import/DeliciousController.php @@ -4,6 +4,7 @@ namespace Wallabag\Controller\Import; use Craue\ConfigBundle\Util\Config; use OldSound\RabbitMqBundle\RabbitMq\Producer as RabbitMqProducer; +use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; use Symfony\Contracts\Translation\TranslatorInterface; @@ -25,6 +26,7 @@ class DeliciousController extends AbstractController /** * @Route("/import/delicious", name="import_delicious", methods={"GET", "POST"}) + * @IsGranted("IMPORT_ENTRIES") */ public function indexAction(Request $request, DeliciousImport $delicious, Config $craueConfig, TranslatorInterface $translator) { diff --git a/src/Controller/Import/ElcuratorController.php b/src/Controller/Import/ElcuratorController.php index 184a14d3d..429b07e3a 100644 --- a/src/Controller/Import/ElcuratorController.php +++ b/src/Controller/Import/ElcuratorController.php @@ -4,6 +4,7 @@ namespace Wallabag\Controller\Import; use Craue\ConfigBundle\Util\Config; use OldSound\RabbitMqBundle\RabbitMq\Producer as RabbitMqProducer; +use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; use Symfony\Contracts\Translation\TranslatorInterface; @@ -27,6 +28,7 @@ class ElcuratorController extends WallabagController /** * @Route("/import/elcurator", name="import_elcurator", methods={"GET", "POST"}) + * @IsGranted("IMPORT_ENTRIES") */ public function indexAction(Request $request, TranslatorInterface $translator) { diff --git a/src/Controller/Import/FirefoxController.php b/src/Controller/Import/FirefoxController.php index ea2d4da4e..0e6656611 100644 --- a/src/Controller/Import/FirefoxController.php +++ b/src/Controller/Import/FirefoxController.php @@ -4,6 +4,7 @@ namespace Wallabag\Controller\Import; use Craue\ConfigBundle\Util\Config; use OldSound\RabbitMqBundle\RabbitMq\Producer as RabbitMqProducer; +use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; use Symfony\Contracts\Translation\TranslatorInterface; @@ -27,6 +28,7 @@ class FirefoxController extends BrowserController /** * @Route("/import/firefox", name="import_firefox", methods={"GET", "POST"}) + * @IsGranted("IMPORT_ENTRIES") */ public function indexAction(Request $request, TranslatorInterface $translator) { diff --git a/src/Controller/Import/HtmlController.php b/src/Controller/Import/HtmlController.php index b07477d22..a8e24a892 100644 --- a/src/Controller/Import/HtmlController.php +++ b/src/Controller/Import/HtmlController.php @@ -2,6 +2,7 @@ namespace Wallabag\Controller\Import; +use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; @@ -14,6 +15,7 @@ abstract class HtmlController extends AbstractController { /** * @Route("/import/html", name="import_html", methods={"GET", "POST"}) + * @IsGranted("IMPORT_ENTRIES") * * @return Response */ diff --git a/src/Controller/Import/ImportController.php b/src/Controller/Import/ImportController.php index 4538391b6..8bbdb3628 100644 --- a/src/Controller/Import/ImportController.php +++ b/src/Controller/Import/ImportController.php @@ -4,6 +4,7 @@ namespace Wallabag\Controller\Import; use Craue\ConfigBundle\Util\Config; use Predis\Client; +use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; use Wallabag\Consumer\RabbitMQConsumerTotalProxy; @@ -21,6 +22,7 @@ class ImportController extends AbstractController /** * @Route("/import/", name="import", methods={"GET"}) + * @IsGranted("IMPORT_ENTRIES") */ public function importAction(ImportChain $importChain) { diff --git a/src/Controller/Import/InstapaperController.php b/src/Controller/Import/InstapaperController.php index 655a26bf7..90e1a943d 100644 --- a/src/Controller/Import/InstapaperController.php +++ b/src/Controller/Import/InstapaperController.php @@ -4,6 +4,7 @@ namespace Wallabag\Controller\Import; use Craue\ConfigBundle\Util\Config; use OldSound\RabbitMqBundle\RabbitMq\Producer as RabbitMqProducer; +use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; use Symfony\Contracts\Translation\TranslatorInterface; @@ -25,6 +26,7 @@ class InstapaperController extends AbstractController /** * @Route("/import/instapaper", name="import_instapaper", methods={"GET", "POST"}) + * @IsGranted("IMPORT_ENTRIES") */ public function indexAction(Request $request, InstapaperImport $instapaper, Config $craueConfig, TranslatorInterface $translator) { diff --git a/src/Controller/Import/OmnivoreController.php b/src/Controller/Import/OmnivoreController.php index 2d64cd5fa..33be27720 100644 --- a/src/Controller/Import/OmnivoreController.php +++ b/src/Controller/Import/OmnivoreController.php @@ -4,6 +4,7 @@ namespace Wallabag\Controller\Import; use Craue\ConfigBundle\Util\Config; use OldSound\RabbitMqBundle\RabbitMq\Producer as RabbitMqProducer; +use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; use Symfony\Contracts\Translation\TranslatorInterface; @@ -25,6 +26,7 @@ class OmnivoreController extends AbstractController /** * @Route("/import/omnivore", name="import_omnivore", methods={"GET", "POST"}) + * @IsGranted("IMPORT_ENTRIES") */ public function indexAction(Request $request, OmnivoreImport $omnivore, Config $craueConfig, TranslatorInterface $translator) { diff --git a/src/Controller/Import/PinboardController.php b/src/Controller/Import/PinboardController.php index a49b2c2bd..b99d2e4d9 100644 --- a/src/Controller/Import/PinboardController.php +++ b/src/Controller/Import/PinboardController.php @@ -4,6 +4,7 @@ namespace Wallabag\Controller\Import; use Craue\ConfigBundle\Util\Config; use OldSound\RabbitMqBundle\RabbitMq\Producer as RabbitMqProducer; +use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; use Symfony\Contracts\Translation\TranslatorInterface; @@ -25,6 +26,7 @@ class PinboardController extends AbstractController /** * @Route("/import/pinboard", name="import_pinboard", methods={"GET", "POST"}) + * @IsGranted("IMPORT_ENTRIES") */ public function indexAction(Request $request, PinboardImport $pinboard, Config $craueConfig, TranslatorInterface $translator) { diff --git a/src/Controller/Import/PocketController.php b/src/Controller/Import/PocketController.php index 1f0b17aa2..f2ad34c35 100644 --- a/src/Controller/Import/PocketController.php +++ b/src/Controller/Import/PocketController.php @@ -4,6 +4,7 @@ namespace Wallabag\Controller\Import; use Craue\ConfigBundle\Util\Config; use OldSound\RabbitMqBundle\RabbitMq\Producer as RabbitMqProducer; +use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; use Symfony\Component\Form\Extension\Core\Type\CheckboxType; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Session\SessionInterface; @@ -31,6 +32,7 @@ class PocketController extends AbstractController /** * @Route("/import/pocket", name="import_pocket", methods={"GET"}) + * @IsGranted("IMPORT_ENTRIES") */ public function indexAction(PocketImport $pocketImport) { @@ -52,6 +54,7 @@ class PocketController extends AbstractController /** * @Route("/import/pocket/auth", name="import_pocket_auth", methods={"POST"}) + * @IsGranted("IMPORT_ENTRIES") */ public function authAction(Request $request, PocketImport $pocketImport) { @@ -82,6 +85,7 @@ class PocketController extends AbstractController /** * @Route("/import/pocket/callback", name="import_pocket_callback", methods={"GET"}) + * @IsGranted("IMPORT_ENTRIES") */ public function callbackAction(PocketImport $pocketImport, TranslatorInterface $translator) { diff --git a/src/Controller/Import/PocketHtmlController.php b/src/Controller/Import/PocketHtmlController.php index 179550350..ea3555ddd 100644 --- a/src/Controller/Import/PocketHtmlController.php +++ b/src/Controller/Import/PocketHtmlController.php @@ -4,6 +4,7 @@ namespace Wallabag\Controller\Import; use Craue\ConfigBundle\Util\Config; use OldSound\RabbitMqBundle\RabbitMq\Producer as RabbitMqProducer; +use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; use Symfony\Contracts\Translation\TranslatorInterface; @@ -27,6 +28,7 @@ class PocketHtmlController extends HtmlController /** * @Route("/import/pocket_html", name="import_pocket_html", methods={"GET", "POST"}) + * @IsGranted("IMPORT_ENTRIES") */ public function indexAction(Request $request, TranslatorInterface $translator) { diff --git a/src/Controller/Import/ReadabilityController.php b/src/Controller/Import/ReadabilityController.php index d54f4f33b..584ffc67d 100644 --- a/src/Controller/Import/ReadabilityController.php +++ b/src/Controller/Import/ReadabilityController.php @@ -4,6 +4,7 @@ namespace Wallabag\Controller\Import; use Craue\ConfigBundle\Util\Config; use OldSound\RabbitMqBundle\RabbitMq\Producer as RabbitMqProducer; +use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; use Symfony\Contracts\Translation\TranslatorInterface; @@ -25,6 +26,7 @@ class ReadabilityController extends AbstractController /** * @Route("/import/readability", name="import_readability", methods={"GET", "POST"}) + * @IsGranted("IMPORT_ENTRIES") */ public function indexAction(Request $request, ReadabilityImport $readability, Config $craueConfig, TranslatorInterface $translator) { diff --git a/src/Controller/Import/ShaarliController.php b/src/Controller/Import/ShaarliController.php index c9aa184ed..91d6fd21b 100644 --- a/src/Controller/Import/ShaarliController.php +++ b/src/Controller/Import/ShaarliController.php @@ -4,6 +4,7 @@ namespace Wallabag\Controller\Import; use Craue\ConfigBundle\Util\Config; use OldSound\RabbitMqBundle\RabbitMq\Producer as RabbitMqProducer; +use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; use Symfony\Contracts\Translation\TranslatorInterface; @@ -27,6 +28,7 @@ class ShaarliController extends HtmlController /** * @Route("/import/shaarli", name="import_shaarli", methods={"GET", "POST"}) + * @IsGranted("IMPORT_ENTRIES") */ public function indexAction(Request $request, TranslatorInterface $translator) { diff --git a/src/Controller/Import/WallabagV1Controller.php b/src/Controller/Import/WallabagV1Controller.php index 85662cc78..de7d1b9b5 100644 --- a/src/Controller/Import/WallabagV1Controller.php +++ b/src/Controller/Import/WallabagV1Controller.php @@ -4,6 +4,7 @@ namespace Wallabag\Controller\Import; use Craue\ConfigBundle\Util\Config; use OldSound\RabbitMqBundle\RabbitMq\Producer as RabbitMqProducer; +use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; use Symfony\Contracts\Translation\TranslatorInterface; @@ -27,6 +28,7 @@ class WallabagV1Controller extends WallabagController /** * @Route("/import/wallabag-v1", name="import_wallabag_v1", methods={"GET", "POST"}) + * @IsGranted("IMPORT_ENTRIES") */ public function indexAction(Request $request, TranslatorInterface $translator) { diff --git a/src/Controller/Import/WallabagV2Controller.php b/src/Controller/Import/WallabagV2Controller.php index 9d615059b..bdfa7dfe6 100644 --- a/src/Controller/Import/WallabagV2Controller.php +++ b/src/Controller/Import/WallabagV2Controller.php @@ -4,6 +4,7 @@ namespace Wallabag\Controller\Import; use Craue\ConfigBundle\Util\Config; use OldSound\RabbitMqBundle\RabbitMq\Producer as RabbitMqProducer; +use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; use Symfony\Contracts\Translation\TranslatorInterface; @@ -27,6 +28,7 @@ class WallabagV2Controller extends WallabagController /** * @Route("/import/wallabag-v2", name="import_wallabag_v2", methods={"GET", "POST"}) + * @IsGranted("IMPORT_ENTRIES") */ public function indexAction(Request $request, TranslatorInterface $translator) { diff --git a/src/Security/Voter/MainVoter.php b/src/Security/Voter/MainVoter.php index e9b22ea90..b8deccfe7 100644 --- a/src/Security/Voter/MainVoter.php +++ b/src/Security/Voter/MainVoter.php @@ -12,6 +12,7 @@ class MainVoter extends Voter public const CREATE_ENTRIES = 'CREATE_ENTRIES'; public const EDIT_ENTRIES = 'EDIT_ENTRIES'; public const EXPORT_ENTRIES = 'EXPORT_ENTRIES'; + public const IMPORT_ENTRIES = 'IMPORT_ENTRIES'; public const LIST_SITE_CREDENTIALS = 'LIST_SITE_CREDENTIALS'; public const CREATE_SITE_CREDENTIALS = 'CREATE_SITE_CREDENTIALS'; @@ -28,7 +29,7 @@ class MainVoter extends Voter return false; } - if (!\in_array($attribute, [self::LIST_ENTRIES, self::CREATE_ENTRIES, self::EDIT_ENTRIES, self::EXPORT_ENTRIES, self::LIST_SITE_CREDENTIALS, self::CREATE_SITE_CREDENTIALS], true)) { + if (!\in_array($attribute, [self::LIST_ENTRIES, self::CREATE_ENTRIES, self::EDIT_ENTRIES, self::EXPORT_ENTRIES, self::IMPORT_ENTRIES, self::LIST_SITE_CREDENTIALS, self::CREATE_SITE_CREDENTIALS], true)) { return false; } @@ -42,6 +43,7 @@ class MainVoter extends Voter case self::CREATE_ENTRIES: case self::EDIT_ENTRIES: case self::EXPORT_ENTRIES: + case self::IMPORT_ENTRIES: case self::LIST_SITE_CREDENTIALS: case self::CREATE_SITE_CREDENTIALS: return $this->security->isGranted('ROLE_USER'); diff --git a/templates/Static/quickstart.html.twig b/templates/Static/quickstart.html.twig index 91c091fbf..4291047a7 100644 --- a/templates/Static/quickstart.html.twig +++ b/templates/Static/quickstart.html.twig @@ -45,22 +45,24 @@ -
{{ 'quickstart.migrate.description'|trans }}
+ {% if is_granted('IMPORT_ENTRIES') %} +{{ 'quickstart.migrate.description'|trans }}
+