From 03bc2064183f0574a1c05d8d0b50c67cd7416e22 Mon Sep 17 00:00:00 2001 From: Richard Henkenjohann Date: Fri, 20 Mar 2020 22:13:17 +0100 Subject: [PATCH 1/2] Fix "allow preview" for published filter setting. --- src/FilterSetting/FilterSettingTypeFactory.php | 17 +++++++++++++++-- src/FilterSetting/Published.php | 16 ++++++++++++++-- src/Resources/config/services.yml | 1 + 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/FilterSetting/FilterSettingTypeFactory.php b/src/FilterSetting/FilterSettingTypeFactory.php index 66c0251..78fb261 100644 --- a/src/FilterSetting/FilterSettingTypeFactory.php +++ b/src/FilterSetting/FilterSettingTypeFactory.php @@ -14,6 +14,7 @@ * @author Christian Schiffler * @author Sven Baumann * @author David Molineus + * @author Richard Henkenjohann * @copyright 2012-2019 The MetaModels team. * @license https://github.com/MetaModels/attribute_checkbox/blob/master/LICENSE LGPL-3.0-or-later * @filesource @@ -21,6 +22,7 @@ namespace MetaModels\AttributeCheckboxBundle\FilterSetting; +use Contao\CoreBundle\Security\Authentication\Token\TokenChecker; use Doctrine\DBAL\Connection; use MetaModels\Filter\FilterUrlBuilder; use MetaModels\Filter\Setting\AbstractFilterSettingTypeFactory; @@ -52,17 +54,26 @@ class FilterSettingTypeFactory extends AbstractFilterSettingTypeFactory */ private $filterUrlBuilder; + /** + * The token checker. + * + * @var TokenChecker + */ + private $tokenChecker; + /** * Create a new instance. * * @param Connection $connection The database connection. * @param EventDispatcherInterface|null $dispatcher The event dispatcher. * @param FilterUrlBuilder|null $filterUrlBuilder The filter URL builder. + * @param TokenChecker|null $tokenChecker The token checker. */ public function __construct( Connection $connection, EventDispatcherInterface $dispatcher = null, - FilterUrlBuilder $filterUrlBuilder = null + FilterUrlBuilder $filterUrlBuilder = null, + TokenChecker $tokenChecker = null ) { parent::__construct(); @@ -75,6 +86,7 @@ public function __construct( $this->connection = $connection; $this->dispatcher = $dispatcher; $this->filterUrlBuilder = $filterUrlBuilder; + $this->tokenChecker = $tokenChecker; } /** @@ -87,7 +99,8 @@ public function createInstance($information, $filterSettings) $information, $this->connection, $this->dispatcher, - $this->filterUrlBuilder + $this->filterUrlBuilder, + $this->tokenChecker ); } } diff --git a/src/FilterSetting/Published.php b/src/FilterSetting/Published.php index 18a451b..1413bdc 100644 --- a/src/FilterSetting/Published.php +++ b/src/FilterSetting/Published.php @@ -15,6 +15,7 @@ * @author Andreas Isaak * @author Sven Baumann * @author David Molineus + * @author Richard Henkenjohann * @copyright 2012-2019 The MetaModels team. * @license https://github.com/MetaModels/attribute_checkbox/blob/master/LICENSE LGPL-3.0-or-later * @filesource @@ -22,6 +23,7 @@ namespace MetaModels\AttributeCheckboxBundle\FilterSetting; +use Contao\CoreBundle\Security\Authentication\Token\TokenChecker; use Contao\System; use Doctrine\DBAL\Connection; use MetaModels\Filter\FilterUrlBuilder; @@ -44,6 +46,13 @@ class Published extends Simple */ private $connection; + /** + * The token checker. + * + * @var TokenChecker + */ + private $tokenChecker; + /** * Constructor - initialize the object and store the parameters. * @@ -52,13 +61,15 @@ class Published extends Simple * @param Connection $connection The database connection. * @param EventDispatcherInterface|null $dispatcher The event dispatcher. * @param FilterUrlBuilder|null $filterUrlBuilder The filter URL builder. + * @param TokenChecker|null $tokenChecker The token checker. */ public function __construct( ICollection $collection, array $data, Connection $connection = null, EventDispatcherInterface $dispatcher = null, - FilterUrlBuilder $filterUrlBuilder = null + FilterUrlBuilder $filterUrlBuilder = null, + TokenChecker $tokenChecker = null ) { parent::__construct($collection, $data, $dispatcher, $filterUrlBuilder); @@ -74,6 +85,7 @@ public function __construct( } $this->connection = $connection; + $this->tokenChecker = $tokenChecker; } /** @@ -86,7 +98,7 @@ public function prepareRules(IFilter $objFilter, $arrFilterUrl) } // Skip filter when in front end preview. - if ($this->get('check_allowpreview') && BE_USER_LOGGED_IN) { + if ($this->get('check_allowpreview') && ($this->tokenChecker && $this->tokenChecker->isPreviewMode())) { return; } diff --git a/src/Resources/config/services.yml b/src/Resources/config/services.yml index 9b9a5ed..a4aff85 100644 --- a/src/Resources/config/services.yml +++ b/src/Resources/config/services.yml @@ -13,5 +13,6 @@ services: - '@database_connection' - '@event_dispatcher' - '@MetaModels\Filter\FilterUrlBuilder' + - '@contao.security.token_checker' tags: - { name: metamodels.filter_factory } From 66d9ead9aeccb3a14d76bbbd435cb11dec013c30 Mon Sep 17 00:00:00 2001 From: Richard Henkenjohann Date: Fri, 27 Mar 2020 16:41:36 +0100 Subject: [PATCH 2/2] Fix CS --- src/FilterSetting/Published.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/FilterSetting/Published.php b/src/FilterSetting/Published.php index 1413bdc..841b656 100644 --- a/src/FilterSetting/Published.php +++ b/src/FilterSetting/Published.php @@ -3,7 +3,7 @@ /** * This file is part of MetaModels/attribute_checkbox. * - * (c) 2012-2019 The MetaModels team. + * (c) 2012-2020 The MetaModels team. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -16,7 +16,7 @@ * @author Sven Baumann * @author David Molineus * @author Richard Henkenjohann - * @copyright 2012-2019 The MetaModels team. + * @copyright 2012-2020 The MetaModels team. * @license https://github.com/MetaModels/attribute_checkbox/blob/master/LICENSE LGPL-3.0-or-later * @filesource */ @@ -84,7 +84,7 @@ public function __construct( $connection = System::getContainer()->get('database_connection'); } - $this->connection = $connection; + $this->connection = $connection; $this->tokenChecker = $tokenChecker; }