]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
Merge pull request #1683 from wallabag/v2-demo
authorNicolas Lœuillet <nicolas@loeuillet.org>
Mon, 22 Feb 2016 13:18:34 +0000 (14:18 +0100)
committerNicolas Lœuillet <nicolas@loeuillet.org>
Mon, 22 Feb 2016 13:18:34 +0000 (14:18 +0100)
Demonstration mode to prevent password changes

app/Resources/CraueConfigBundle/translations/CraueConfigBundle.en.yml
app/Resources/CraueConfigBundle/translations/CraueConfigBundle.fr.yml
src/Wallabag/CoreBundle/Command/InstallCommand.php
src/Wallabag/CoreBundle/Controller/ConfigController.php
src/Wallabag/CoreBundle/DataFixtures/ORM/LoadSettingData.php
src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml
src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php

index 719e51eab1618f09cfcf65f63c7afb961aed548e..b627376ec72700f1032e880b03e8e76b340fff3e 100644 (file)
@@ -25,3 +25,5 @@ modify_settings: "apply"
 piwik_host: Host of your website in Piwik
 piwik_site_id: ID of your website in Piwik
 piwik_enabled: Enable Piwik
+demo_mode_enabled: "Enable demo mode ? (only used for the wallabag public demo)"
+demo_mode_username: "Demo user"
index ab5dfc7219e38ee35c7eca9ca7754e8db5b492fb..084eb6df11c30eb01205b4a8c564dd549739178b 100644 (file)
@@ -25,3 +25,5 @@ modify_settings: "appliquer"
 piwik_host: URL de votre site dans Piwik
 piwik_site_id: ID de votre site dans Piwik
 piwik_enabled: Activer Piwik
+demo_mode_enabled: "Activer le mode démo ? (utiliser uniquement pour la démo publique de wallabag)"
+demo_mode_username: "Utilisateur de la démo"
index 93520f9a87d09dd7c21d206be1831696868d01d2..2e241757d27606378405d98acc08cc648a189425 100644 (file)
@@ -327,6 +327,16 @@ class InstallCommand extends ContainerAwareCommand
                 'value' => '1',
                 'section' => 'analytics',
             ],
+            [
+                'name' => 'demo_mode_enabled',
+                'value' => '0',
+                'section' => 'misc',
+            ],
+            [
+                'name' => 'demo_mode_username',
+                'value' => 'wallabag',
+                'section' => 'misc',
+            ],
         ];
 
         foreach ($settings as $setting) {
index 6eb621d875f36275c02908b9428c378144e2ba4d..1791eac23719e09ba34929ab0dd36ef162599107 100644 (file)
@@ -57,13 +57,16 @@ class ConfigController extends Controller
         $pwdForm->handleRequest($request);
 
         if ($pwdForm->isValid()) {
-            $user->setPlainPassword($pwdForm->get('new_password')->getData());
-            $userManager->updateUser($user, true);
+            if ($this->get('craue_config')->get('demo_mode_enabled') && $this->get('craue_config')->get('demo_mode_username') === $user->getUsername()) {
+                $message = 'In demonstration mode, you can\'t change password for this user.';
+            } else {
+                $message = 'Password updated';
 
-            $this->get('session')->getFlashBag()->add(
-                'notice',
-                'Password updated'
-            );
+                $user->setPlainPassword($pwdForm->get('new_password')->getData());
+                $userManager->updateUser($user, true);
+            }
+
+            $this->get('session')->getFlashBag()->add('notice', $message);
 
             return $this->redirect($this->generateUrl('config').'#set4');
         }
index 10b60f30027b6b189882df51c18d519d6106275c..1f4cafdfc7dd9a64a6c45a9ca9eb448ee601004a 100644 (file)
@@ -125,6 +125,16 @@ class LoadSettingData extends AbstractFixture implements OrderedFixtureInterface
                 'value' => '1',
                 'section' => 'analytics',
             ],
+            [
+                'name' => 'demo_mode_enabled',
+                'value' => '0',
+                'section' => 'misc',
+            ],
+            [
+                'name' => 'demo_mode_username',
+                'value' => 'wallabag',
+                'section' => 'misc',
+            ],
         ];
 
         foreach ($settings as $setting) {
index 541616469e8a5786f323833cfca18965159cb885..65280ebc96b945dc4d3cc991af20a0b7a89e83ee 100644 (file)
@@ -175,6 +175,7 @@ Entry deleted: "Article supprimé"
 Tagging rule deleted: "Règle supprimée"
 Tagging rules updated: "Règles mises à jour"
 User "%username%" added: 'Utilisateur "%username%" ajouté'
+In demonstration mode, you can't change password for this user.: 'En démo, vous ne pouvez pas changer le mot de passe de cet utilisateur.'
 
 # Entry
 Mark as read: 'Marquer comme lu'
index 6c370a2d8373781d4d997a488fe1405f1ff4e81b..2af93ffecffe7051dfc114a453b297def5b86189 100644 (file)
@@ -577,4 +577,34 @@ class ConfigControllerTest extends WallabagCoreTestCase
         $this->assertEquals(403, $client->getResponse()->getStatusCode());
         $this->assertContains('You can not access this tagging ryle', $client->getResponse()->getContent());
     }
+
+    public function testDemoMode()
+    {
+        $this->logInAs('admin');
+        $client = $this->getClient();
+
+        $config = $client->getContainer()->get('craue_config');
+        $config->set('demo_mode_enabled', 1);
+        $config->set('demo_mode_username', 'admin');
+
+        $crawler = $client->request('GET', '/config');
+
+        $this->assertEquals(200, $client->getResponse()->getStatusCode());
+
+        $form = $crawler->filter('button[id=change_passwd_save]')->form();
+
+        $data = array(
+            'change_passwd[old_password]' => 'mypassword',
+            'change_passwd[new_password][first]' => 'mypassword',
+            'change_passwd[new_password][second]' => 'mypassword',
+        );
+
+        $client->submit($form, $data);
+
+        $this->assertEquals(302, $client->getResponse()->getStatusCode());
+        $this->assertContains('In demonstration mode, you can\'t change password for this user.', $client->getContainer()->get('session')->getFlashBag()->get('notice')[0]);
+
+        $config->set('demo_mode_enabled', 0);
+        $config->set('demo_mode_username', 'wallabag');
+    }
 }