]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
Added internal setting to enable/disable articles with paywall
authorNicolas Lœuillet <nicolas@loeuillet.org>
Tue, 22 Nov 2016 13:56:53 +0000 (14:56 +0100)
committerNicolas Lœuillet <nicolas@loeuillet.org>
Tue, 22 Nov 2016 13:56:53 +0000 (14:56 +0100)
app/DoctrineMigrations/Version20161122144743.php [new file with mode: 0644]
app/Resources/CraueConfigBundle/translations/CraueConfigBundle.en.yml
src/Wallabag/CoreBundle/Command/InstallCommand.php
src/Wallabag/CoreBundle/DataFixtures/ORM/LoadSettingData.php
src/Wallabag/CoreBundle/Helper/HttpClientFactory.php
src/Wallabag/CoreBundle/Resources/config/services.yml

diff --git a/app/DoctrineMigrations/Version20161122144743.php b/app/DoctrineMigrations/Version20161122144743.php
new file mode 100644 (file)
index 0000000..ec80c48
--- /dev/null
@@ -0,0 +1,45 @@
+<?php
+
+namespace Application\Migrations;
+
+use Doctrine\DBAL\Migrations\AbstractMigration;
+use Doctrine\DBAL\Schema\Schema;
+use Symfony\Component\DependencyInjection\ContainerAwareInterface;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+
+/**
+ * Add the restricted_access internal setting for articles with paywall
+ */
+class Version20161122144743 extends AbstractMigration implements ContainerAwareInterface
+{
+    /**
+     * @var ContainerInterface
+     */
+    private $container;
+
+    public function setContainer(ContainerInterface $container = null)
+    {
+        $this->container = $container;
+    }
+
+    private function getTable($tableName)
+    {
+        return $this->container->getParameter('database_table_prefix') . $tableName;
+    }
+
+    /**
+     * @param Schema $schema
+     */
+    public function up(Schema $schema)
+    {
+        $this->addSql("INSERT INTO ".$this->getTable('craue_config_setting')." (name, value, section) VALUES ('restricted_access', 0, 'entry')");
+    }
+
+    /**
+     * @param Schema $schema
+     */
+    public function down(Schema $schema)
+    {
+        $this->addSql("DELETE FROM ".$this->getTable('craue_config_setting')." WHERE name = 'restricted_access';");
+    }
+}
index 23de7a434a06a89b1d00f1976633615433095090..52cb8e202c716768b4bdfab62057f1d4d9836453 100644 (file)
@@ -32,3 +32,4 @@ demo_mode_enabled: "Enable demo mode ? (only used for the wallabag public demo)"
 demo_mode_username: "Demo user"
 share_public: Allow public url for entries
 download_images_enabled: Download images locally
+restricted_access: Enable authentication for websites with paywall
index e95c3a7b226b76cd2e87b7d1ef66a7b20eaee878..f0738b9172a8f5cbda8bea7bb8be553dd2d54fd4 100644 (file)
@@ -432,6 +432,11 @@ class InstallCommand extends ContainerAwareCommand
                 'value' => '0',
                 'section' => 'misc',
             ],
+            [
+                'name' => 'restricted_access',
+                'value' => '0',
+                'section' => 'entry',
+            ],
         ];
 
         foreach ($settings as $setting) {
index 1f74891a836aea752ed3eb9ea28ac4a3bc65344f..a723656e250470e98384dc46954bf81e047564a9 100644 (file)
@@ -155,6 +155,11 @@ class LoadSettingData extends AbstractFixture implements OrderedFixtureInterface
                 'value' => '0',
                 'section' => 'misc',
             ],
+            [
+                'name' => 'restricted_access',
+                'value' => '0',
+                'section' => 'entry',
+            ],
         ];
 
         foreach ($settings as $setting) {
index 161a5e9fb41fc535b3dd8d517efd1684c7ff40f8..ca84c8da232e9ea539cf8f9d5e71bfc9bd078ba0 100644 (file)
@@ -18,23 +18,31 @@ class HttpClientFactory
     /** @var \GuzzleHttp\Cookie\CookieJar */
     private $cookieJar;
 
+    private $restrictedAccess;
+
     /**
      * HttpClientFactory constructor.
      *
      * @param \GuzzleHttp\Event\SubscriberInterface $authenticatorSubscriber
      * @param \GuzzleHttp\Cookie\CookieJar          $cookieJar
+     * @param string                                $restrictedAccess
      */
-    public function __construct(SubscriberInterface $authenticatorSubscriber, CookieJar $cookieJar)
+    public function __construct(SubscriberInterface $authenticatorSubscriber, CookieJar $cookieJar, $restrictedAccess)
     {
         $this->authenticatorSubscriber = $authenticatorSubscriber;
         $this->cookieJar = $cookieJar;
+        $this->restrictedAccess = $restrictedAccess;
     }
 
     /**
-     * @return \GuzzleHttp\Client
+     * @return \GuzzleHttp\Client|null
      */
     public function buildHttpClient()
     {
+        if (0 === (int) $this->restrictedAccess) {
+            return null;
+        }
+
         // we clear the cookie to avoid websites who use cookies for analytics
         $this->cookieJar->clear();
         // need to set the (shared) cookie jar
index 1b7f39fc225b417d74a24073bcad12a73eb396c0..bcf0c9cab338748831df21ba5f2164b9ae385ca5 100644 (file)
@@ -73,6 +73,7 @@ services:
         arguments:
             - "@bd_guzzle_site_authenticator.authenticator_subscriber"
             - "@wallabag_core.guzzle.cookie_jar"
+            - '@=service(''craue_config'').get(''restricted_access'')'
 
     wallabag_core.guzzle.cookie_jar:
         class: GuzzleHttp\Cookie\FileCookieJar