]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
Changed parsing of login_extra_fields in guzzle auth
authorBertrand Dunogier <bertrand.dunogier@ez.no>
Sat, 21 Jan 2017 23:42:05 +0000 (00:42 +0100)
committerBertrand Dunogier <bertrand.dunogier@ez.no>
Thu, 4 May 2017 19:45:06 +0000 (21:45 +0200)
src/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilder.php
tests/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilderTest.php

index 6d4129e8063216ecd3ee97981bd43df3c047ad41..1c866f17e47eb6f228028caef5293b7dbee76039 100644 (file)
@@ -54,7 +54,7 @@ class GrabySiteConfigBuilder implements SiteConfigBuilder
             'loginUri' => $config->login_uri ?: null,
             'usernameField' => $config->login_username_field ?: null,
             'passwordField' => $config->login_password_field ?: null,
-            'extraFields' => is_array($config->login_extra_fields) ? $config->login_extra_fields : [],
+            'extraFields' => $this->processExtraFields($config->login_extra_fields),
             'notLoggedInXpath' => $config->not_logged_in_xpath ?: null,
         ];
 
@@ -65,4 +65,30 @@ class GrabySiteConfigBuilder implements SiteConfigBuilder
 
         return new SiteConfig($parameters);
     }
+
+    /**
+     * Processes login_extra_fields config, transforming an '=' separated array of strings
+     * into a key/value array.
+     *
+     * @param array|mixed $extraFieldsStrings
+     *
+     * @return array
+     */
+    protected function processExtraFields($extraFieldsStrings)
+    {
+        if (!is_array($extraFieldsStrings)) {
+            return [];
+        }
+
+        $extraFields = [];
+        foreach ($extraFieldsStrings as $extraField) {
+            if (strpos($extraField, '=') === false) {
+                continue;
+            }
+            list($fieldName, $fieldValue) = explode('=', $extraField, 2);
+            $extraFields[$fieldName] = $fieldValue;
+        }
+
+        return $extraFields;
+    }
 }
index aee6725965b9fae7da198d18419e2710b541b563..8341b11f468aedafd429bd44c78c309c22b0081c 100644 (file)
@@ -24,7 +24,7 @@ class GrabySiteConfigBuilderTest extends PHPUnit_Framework_TestCase
         $grabySiteConfig->login_uri = 'http://example.com/login';
         $grabySiteConfig->login_username_field = 'login';
         $grabySiteConfig->login_password_field = 'password';
-        $grabySiteConfig->login_extra_fields = ['field' => 'value'];
+        $grabySiteConfig->login_extra_fields = ['field=value'];
         $grabySiteConfig->not_logged_in_xpath = '//div[@class="need-login"]';
 
         $grabyConfigBuilderMock