]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
Merge pull request #3994 from wallabag/feature/revoke-feed-token
authorKevin Decherf <kevin@kdecherf.com>
Wed, 5 Jun 2019 16:32:21 +0000 (18:32 +0200)
committerGitHub <noreply@github.com>
Wed, 5 Jun 2019 16:32:21 +0000 (18:32 +0200)
Add ability to revoke feed token

18 files changed:
src/Wallabag/CoreBundle/Controller/ConfigController.php
src/Wallabag/CoreBundle/Resources/translations/messages.da.yml
src/Wallabag/CoreBundle/Resources/translations/messages.de.yml
src/Wallabag/CoreBundle/Resources/translations/messages.en.yml
src/Wallabag/CoreBundle/Resources/translations/messages.es.yml
src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml
src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml
src/Wallabag/CoreBundle/Resources/translations/messages.it.yml
src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml
src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml
src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml
src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml
src/Wallabag/CoreBundle/Resources/translations/messages.ru.yml
src/Wallabag/CoreBundle/Resources/translations/messages.th.yml
src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml
src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig
src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig
tests/Wallabag/CoreBundle/Controller/ConfigControllerTest.php

index 3b281d488ececf68fd0362f1d9ab3a98862cf71f..cea4130317e7ebfea4afc1430534718f7b939642 100644 (file)
@@ -299,6 +299,34 @@ class ConfigController extends Controller
         return $this->redirect($this->generateUrl('config') . '#set2');
     }
 
+    /**
+     * @param Request $request
+     *
+     * @Route("/revoke-token", name="revoke_token")
+     *
+     * @return RedirectResponse|JsonResponse
+     */
+    public function revokeTokenAction(Request $request)
+    {
+        $config = $this->getConfig();
+        $config->setFeedToken(null);
+
+        $em = $this->getDoctrine()->getManager();
+        $em->persist($config);
+        $em->flush();
+
+        if ($request->isXmlHttpRequest()) {
+            return new JsonResponse();
+        }
+
+        $this->addFlash(
+            'notice',
+            'flashes.config.notice.feed_token_revoked'
+        );
+
+        return $this->redirect($this->generateUrl('config') . '#set2');
+    }
+
     /**
      * Deletes a tagging rule and redirect to the config homepage.
      *
index d9440e847e70569328ea1029ecc189f9540bc3ff..c6a91cd1425af2aab0f9cf5559a6d38929a218b3 100644 (file)
@@ -92,6 +92,7 @@ config:
         no_token: 'Intet token'
         token_create: 'Opret token'
         token_reset: 'Nulstil token'
+        # token_revoke: 'Revoke the token'
         feed_links: 'RSS-Links'
         feed_link:
             unread: 'Ulæst'
@@ -594,6 +595,7 @@ flashes:
             # tagging_rules_updated: 'Tagging rules updated'
             # tagging_rules_deleted: 'Tagging rule deleted'
             # feed_token_updated: 'RSS token updated'
+            # feed_token_revoked: 'RSS token revoked'
             # annotations_reset: Annotations reset
             # tags_reset: Tags reset
             # entries_reset: Entries reset
index d3ca30cde2ebc0ae0a7938fc5306126df94cd8a4..4b78530603ff6b7a420a84ba010052c4ee4809c9 100644 (file)
@@ -92,6 +92,7 @@ config:
         no_token: 'Kein Token'
         token_create: 'Token erstellen'
         token_reset: 'Token zurücksetzen'
+        # token_revoke: 'Revoke the token'
         feed_links: 'RSS-Links'
         feed_link:
             unread: 'Ungelesene'
@@ -585,6 +586,7 @@ flashes:
             tagging_rules_updated: 'Tagging-Regeln aktualisiert'
             tagging_rules_deleted: 'Tagging-Regel gelöscht'
             feed_token_updated: 'RSS-Token aktualisiert'
+            # feed_token_revoked: 'RSS token revoked'
             annotations_reset: Anmerkungen zurücksetzen
             tags_reset: Tags zurücksetzen
             entries_reset: Einträge zurücksetzen
index 7fd67ed2b9695a06f3e2a4aeff85d7cbb011c7bb..1f8c47aac2c6b1938f35dad5c9c74a73a0431d68 100644 (file)
@@ -92,6 +92,7 @@ config:
         no_token: 'No token'
         token_create: 'Create your token'
         token_reset: 'Regenerate your token'
+        token_revoke: 'Revoke the token'
         feed_links: 'Feed links'
         feed_link:
             unread: 'Unread'
@@ -594,6 +595,7 @@ flashes:
             tagging_rules_updated: 'Tagging rules updated'
             tagging_rules_deleted: 'Tagging rule deleted'
             feed_token_updated: 'Feed token updated'
+            feed_token_revoked: 'RSS token revoked'
             annotations_reset: Annotations reset
             tags_reset: Tags reset
             entries_reset: Entries reset
index d37cd08d49c0e284b4bc02ace1e76c136623a92b..06fa1e48f5e04917fcd3dda9ddac1de137b81d82 100644 (file)
@@ -92,6 +92,7 @@ config:
         no_token: 'Sin token'
         token_create: 'Crear token'
         token_reset: 'Reiniciar token'
+        # token_revoke: 'Revoke the token'
         feed_links: 'URLs de feeds RSS'
         feed_link:
             unread: 'sin leer'
@@ -594,6 +595,7 @@ flashes:
             tagging_rules_updated: 'Regla de etiquetado actualizada'
             tagging_rules_deleted: 'Regla de etiquetado eliminada'
             feed_token_updated: 'Token RSS actualizado'
+            # feed_token_revoked: 'RSS token revoked'
             annotations_reset: Anotaciones reiniciadas
             tags_reset: Etiquetas reiniciadas
             entries_reset: Artículos reiniciados
index 1f74deba9c34aa874b5aab6d783c5cbcf95fb07e..5c1eaccc72db4615a68a43cf69801d727750967a 100644 (file)
@@ -92,6 +92,7 @@ config:
         no_token: 'بدون کد'
         token_create: 'کد خود را بسازید'
         token_reset: 'بازنشانی کد'
+        # token_revoke: 'Revoke the token'
         feed_links: 'پیوند آر-اس-اس'
         feed_link:
             unread: 'خوانده‌نشده'
@@ -594,6 +595,7 @@ flashes:
             tagging_rules_updated: 'برچسب‌گذاری خودکار به‌روز شد'
             tagging_rules_deleted: 'قانون برچسب‌گذاری پاک شد'
             feed_token_updated: 'کد آر-اس-اس به‌روز شد'
+            # feed_token_revoked: 'RSS token revoked'
             # annotations_reset: Annotations reset
             # tags_reset: Tags reset
             # entries_reset: Entries reset
index f0ff9c7bf7f875361c96a16a04d4784781991fdd..09c1cc8f0eec77ab0e720b3b52351844f130f7ac 100644 (file)
@@ -92,6 +92,7 @@ config:
         no_token: "Aucun jeton généré"
         token_create: "Créez votre jeton"
         token_reset: "Réinitialisez votre jeton"
+        token_revoke: 'Supprimer le jeton'
         feed_links: "Adresses de vos flux"
         feed_link:
             unread: "Non lus"
@@ -595,6 +596,7 @@ flashes:
             tagging_rules_updated: "Règles mises à jour"
             tagging_rules_deleted: "Règle supprimée"
             feed_token_updated: "Jeton des flux mis à jour"
+            feed_token_revoked: 'Jeton des flux supprimé'
             annotations_reset: "Annotations supprimées"
             tags_reset: "Tags supprimés"
             entries_reset: "Articles supprimés"
index 68495bad9ca21f77f553e4ea05eabae285200d85..92f2415b8a817691262bf1e8f4abcae43af3d3fb 100644 (file)
@@ -92,6 +92,7 @@ config:
         no_token: 'Nessun token'
         token_create: 'Crea il tuo token'
         token_reset: 'Rigenera il tuo token'
+        # token_revoke: 'Revoke the token'
         feed_links: 'Collegamenti RSS'
         feed_link:
             unread: 'Non letti'
@@ -593,6 +594,7 @@ flashes:
             tagging_rules_updated: 'Regole di etichettatura aggiornate'
             tagging_rules_deleted: 'Regola di etichettatura eliminate'
             feed_token_updated: 'RSS token aggiornato'
+            # feed_token_revoked: 'RSS token revoked'
             annotations_reset: Reset annotazioni
             tags_reset: Reset etichette
             entries_reset: Reset articoli
index 4c4e0a8646f925baa17f0ffaa70d88e195d8b7fb..4439cbcd57c0555d978aa89857b3848af72560b1 100644 (file)
@@ -92,6 +92,7 @@ config:
         no_token: 'Pas cap de geton generat'
         token_create: 'Creatz vòstre geton'
         token_reset: 'Reïnicializatz vòstre geton'
+        # token_revoke: 'Revoke the token'
         feed_links: 'URLs de vòstres fluxes RSS'
         feed_link:
             unread: 'Pas legits'
@@ -593,6 +594,7 @@ flashes:
             tagging_rules_updated: 'Règlas misa a jorn'
             tagging_rules_deleted: 'Règla suprimida'
             feed_token_updated: 'Geton RSS mes a jorn'
+            # feed_token_revoked: 'RSS token revoked'
             annotations_reset: Anotacions levadas
             tags_reset: Etiquetas levadas
             entries_reset: Articles levats
index edfc7f4e500e3967e85029e336d9db124d194259..8311770f3686d2b846ea25ac40a15e3dc0501c60 100644 (file)
@@ -92,6 +92,7 @@ config:
         no_token: 'Brak tokena'
         token_create: 'Stwórz tokena'
         token_reset: 'Zresetuj swojego tokena'
+        # token_revoke: 'Revoke the token'
         feed_links: 'RSS links'
         feed_link:
             unread: 'Nieprzeczytane'
@@ -593,6 +594,7 @@ flashes:
             tagging_rules_updated: 'Reguły tagowania zaktualizowane'
             tagging_rules_deleted: 'Reguła tagowania usunięta'
             feed_token_updated: 'Token kanału RSS zaktualizowany'
+            # feed_token_revoked: 'RSS token revoked'
             annotations_reset: Zresetuj adnotacje
             tags_reset: Zresetuj tagi
             entries_reset: Zresetuj wpisy
index 400f1d5697f7370c98f783bde9f2f60976d6fe03..c83bf6c1ea7ffc87c78ebae6053b9b3a2203ab65 100644 (file)
@@ -92,6 +92,7 @@ config:
         no_token: 'Nenhum Token'
         token_create: 'Criar seu token'
         token_reset: 'Gerar novamente seu token'
+        # token_revoke: 'Revoke the token'
         feed_links: 'Links RSS'
         feed_link:
             unread: 'Não lido'
@@ -593,6 +594,7 @@ flashes:
             tagging_rules_updated: 'Regras de tags atualizadas'
             tagging_rules_deleted: 'Regra de tag apagada'
             feed_token_updated: 'Token RSS atualizado'
+            # feed_token_revoked: 'RSS token revoked'
             # annotations_reset: Annotations reset
             # tags_reset: Tags reset
             # entries_reset: Entries reset
index 21e920e633ed1910f4eb06f5d328723f48def5e1..c8bf80831a5d20aa3f994472441e3f585e5fdda6 100644 (file)
@@ -92,6 +92,7 @@ config:
         no_token: 'Fără token'
         token_create: 'Crează-ți token'
         token_reset: 'Resetează-ți token-ul'
+        # token_revoke: 'Revoke the token'
         feed_links: 'Link-uri RSS'
         feed_link:
             unread: 'Unread'
@@ -593,6 +594,7 @@ flashes:
             # tagging_rules_updated: 'Tagging rules updated'
             # tagging_rules_deleted: 'Tagging rule deleted'
             # feed_token_updated: 'RSS token updated'
+            # feed_token_revoked: 'RSS token revoked'
             # annotations_reset: Annotations reset
             # tags_reset: Tags reset
             # entries_reset: Entries reset
index cd7c165cd5b03e01c52e79f410c59d0f5a5de1b3..5d0e70c934089142db93aec5248035f2042bdb29 100644 (file)
@@ -91,6 +91,7 @@ config:
         no_token: 'Ключ не задан'
         token_create: 'Создать ключ'
         token_reset: 'Пересоздать ключ'
+        # token_revoke: 'Revoke the token'
         feed_links: 'ссылка на RSS'
         feed_link:
             unread: 'непрочитанные'
@@ -560,6 +561,7 @@ flashes:
             tagging_rules_updated: 'Правила тегировния обновлены'
             tagging_rules_deleted: 'Правила тегировния удалены'
             feed_token_updated: 'RSS ключ обновлен'
+            # feed_token_revoked: 'RSS token revoked'
             annotations_reset: "Аннотации сброшены"
             tags_reset: "Теги сброшены"
             entries_reset: "Записи сброшены"
index 5e772ddbd43792933aab68f936e031d9573cd78e..66426d5354af9ed7b121214cefd6a02b2735b6e9 100644 (file)
@@ -92,6 +92,7 @@ config:
         no_token: 'ไม่มีเครื่องหมาย'
         token_create: 'สร้างเครื่องหมาย'
         token_reset: 'ทำเครื่องหมาย'
+        # token_revoke: 'Revoke the token'
         feed_links: 'ลิงค์ RSS'
         feed_link:
             unread: 'ยังไมได้่อ่าน'
@@ -591,6 +592,7 @@ flashes:
             tagging_rules_updated: 'อัปเดตการแท็กข้อบังคับ'
             tagging_rules_deleted: 'การลบข้อบังคับของแท็ก'
             feed_token_updated: 'อัปเดตเครื่องหมาย RSS '
+            # feed_token_revoked: 'RSS token revoked'
             annotations_reset: รีเซ็ตหมายเหตุ
             tags_reset: รีเซ็ตแท็ก
             entries_reset: รีเซ็ตรายการ
index ad11688a00c8e94d3da0f366b68e9c479e70c81c..50bd38e366a2dfc8ef748caf30e0d2c180212a39 100644 (file)
@@ -92,6 +92,7 @@ config:
         no_token: 'Belirteç (token) yok'
         token_create: 'Yeni belirteç (token) oluştur'
         token_reset: 'Belirteci (token) sıfırla'
+        # token_revoke: 'Revoke the token'
         feed_links: 'RSS akış bağlantıları'
         feed_link:
             unread: 'Okunmayan'
index 4ef6ab3cca296b8e9e4254326017241306385275..a1caf242211b0eb1353e59a1b70491c2b67bf8d3 100644 (file)
                 {% else %}
                     <em>{{ 'config.form_feed.no_token'|trans }}</em>
                 {% endif %}
-                –
-                <a href="{{ path('generate_token') }}">
-                    {% if feed.token %}
-                        {{ 'config.form_feed.token_reset'|trans }}
-                    {% else %}
-                        {{ 'config.form_feed.token_create'|trans }}
-                    {% endif %}
-                </a>
+
+                {% if feed.token %}
+                    – <a href="{{ path('generate_token') }}">{{ 'config.form_feed.token_reset'|trans }}</a>
+                    – <a href="{{ path('revoke_token') }}">{{ 'config.form_feed.token_revoke'|trans }}</a>
+                {% else %}
+                    – <a href="{{ path('generate_token') }}">{{ 'config.form_feed.token_create'|trans }}</a>
+                {% endif %}
+
             </div>
         </fieldset>
 
index 818fc4e718d0af40edc30612a55ecf94708506d6..a48c9e28af12b38a32a2119f10a1ce695b7592db 100644 (file)
                                         {% else %}
                                             <em>{{ 'config.form_feed.no_token'|trans }}</em>
                                         {% endif %}
-                                        – <a href="{{ path('generate_token') }}">
+
                                         {% if feed.token %}
-                                            {{ 'config.form_feed.token_reset'|trans }}
+                                            – <a href="{{ path('generate_token') }}">{{ 'config.form_feed.token_reset'|trans }}</a>
+                                            – <a href="{{ path('revoke_token') }}">{{ 'config.form_feed.token_revoke'|trans }}</a>
                                         {% else %}
-                                            {{ 'config.form_feed.token_create'|trans }}
-                                        {% endif %}</a>
+                                            – <a href="{{ path('generate_token') }}">{{ 'config.form_feed.token_create'|trans }}</a>
+                                        {% endif %}
                                     </div>
                                 </div>
                             </div>
index d8478ce3e13ea17ef27fb8fe9ea955df48893e81..b9e0bed25118c27faaddcd223617fe572f4132f4 100644 (file)
@@ -330,7 +330,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
         $crawler = $client->followRedirect();
 
         $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text']));
-        $this->assertNotContains('config.form_feed.no_token', $body[0]);
+        $this->assertContains('config.form_feed.token_reset', $body[0]);
     }
 
     public function testGenerateTokenAjax()
@@ -351,6 +351,22 @@ class ConfigControllerTest extends WallabagCoreTestCase
         $this->assertArrayHasKey('token', $content);
     }
 
+    public function testRevokeTokenAjax()
+    {
+        $this->logInAs('admin');
+        $client = $this->getClient();
+
+        $client->request(
+            'GET',
+            '/revoke-token',
+            [],
+            [],
+            ['HTTP_X-Requested-With' => 'XMLHttpRequest']
+        );
+
+        $this->assertSame(200, $client->getResponse()->getStatusCode());
+    }
+
     public function testFeedUpdate()
     {
         $this->logInAs('admin');