]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
Add ability to revoke feed token 3994/head
authorJeremy Benoist <jeremy.benoist@gmail.com>
Wed, 5 Jun 2019 15:55:13 +0000 (17:55 +0200)
committerJeremy Benoist <jeremy.benoist@gmail.com>
Wed, 5 Jun 2019 15:55:13 +0000 (17:55 +0200)
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 e04c2ff1c7b0b2996596fe5d89accc898bbcdb50..330b275593969a9517e0aa22335f956e2e116491 100644 (file)
@@ -91,6 +91,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'
@@ -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 5a9668a9ab32ab134d6cd287db1787cc3872ccd1..6f81dc9aa299b89ba08f020d7a3725f7225e7d7e 100644 (file)
@@ -91,6 +91,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'
@@ -584,6 +585,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 e2994f539ba653cb97e79c94d39c63482e364b15..8533f82a91bdee902530c1178568f02a2fde3400 100644 (file)
@@ -91,6 +91,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'
@@ -593,6 +594,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 d1ccfc81f4727ac4a86bfab5501b11e0ac2576cb..51f3d69d06de5de9393b86cd2753c51ac0c026a6 100644 (file)
@@ -91,6 +91,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'
@@ -593,6 +594,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 e5d36bd331a06d91b049fdf0d4f5ce709eaa6a89..6a9cd09b77252356b524302aabace9e151219d4e 100644 (file)
@@ -91,6 +91,7 @@ config:
         no_token: 'بدون کد'
         token_create: 'کد خود را بسازید'
         token_reset: 'بازنشانی کد'
+        # token_revoke: 'Revoke the token'
         feed_links: 'پیوند آر-اس-اس'
         feed_link:
             unread: 'خوانده‌نشده'
@@ -593,6 +594,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 0b1853a4ebeb0d6b08f93f43308e16967e799706..0367ec4804e92c44274908bda9c2da1b05061def 100644 (file)
@@ -91,6 +91,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"
@@ -594,6 +595,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 0474d2bc6b3afa5ec50fa26d9038cede4d20dafd..02a6145c8d5e5ba68d6f4c37ce1d03c606beabc8 100644 (file)
@@ -91,6 +91,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'
@@ -592,6 +593,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 e761832e2141efa4abfda030220a9015f9853029..aadc8358215a53c1a8d1135864586df082d57a1c 100644 (file)
@@ -91,6 +91,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'
@@ -592,6 +593,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 f3d506e556e8ef240dfc03a628e7cb8000545293..780251d87cb37ffac22107abfdef563e2d37f808 100644 (file)
@@ -91,6 +91,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'
@@ -592,6 +593,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 6ddc1fc1ff87e34ae70f3d749a627185b7b8418f..e811c82153038313e575366ad9df6e4bc7a9a6c7 100644 (file)
@@ -91,6 +91,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'
@@ -592,6 +593,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 8c0791f0ba12eeb93070d4c25b383844c7471e29..4e2067d376d112442bd96f8a53bcb6695be4076e 100644 (file)
@@ -91,6 +91,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'
@@ -592,6 +593,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 2ee2d83abc979228a17da15dd91caf4f5748227e..d1040a6b6312195810ef637e2e584fa903f7b59d 100644 (file)
@@ -89,6 +89,7 @@ config:
         no_token: 'Ключ не задан'
         token_create: 'Создать ключ'
         token_reset: 'Пересоздать ключ'
+        # token_revoke: 'Revoke the token'
         feed_links: 'ссылка на RSS'
         feed_link:
             unread: 'непрочитанные'
@@ -558,6 +559,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 967ae427d6376671433a2fb21929c899f16fff27..bf2bd1f507d6ce1c34c0f7a8097a66bd00bf1aaa 100644 (file)
@@ -91,6 +91,7 @@ config:
         no_token: 'ไม่มีเครื่องหมาย'
         token_create: 'สร้างเครื่องหมาย'
         token_reset: 'ทำเครื่องหมาย'
+        # token_revoke: 'Revoke the token'
         feed_links: 'ลิงค์ RSS'
         feed_link:
             unread: 'ยังไมได้่อ่าน'
@@ -590,6 +591,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 2f86f25d7342e56f24efcea1ec90774f82a54b65..93fb6ca1ceb9e5db7849b780df04c463dc5e190c 100644 (file)
@@ -91,6 +91,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');