]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
Remove ability to change username 1164/head
authorJeremy <jeremy.benoist@gmail.com>
Fri, 27 Mar 2015 23:10:39 +0000 (00:10 +0100)
committerJeremy <jeremy.benoist@gmail.com>
Wed, 1 Apr 2015 19:23:27 +0000 (21:23 +0200)
Since password are linked to username it was hard to change username while checking that the password is the good one.

Instead of doing crazy things to achieve that, I act that user won't be able to update username.

Also, username (and email) must be unique, since people logged in using username and can request a new password using email.

This should fix #1149

src/Wallabag/CoreBundle/Controller/ConfigController.php
src/Wallabag/CoreBundle/Entity/User.php
src/Wallabag/CoreBundle/Form/Type/UserInformationType.php [moved from src/Wallabag/CoreBundle/Form/Type/UserType.php with 87% similarity]
src/Wallabag/CoreBundle/Resources/views/Config/index.html.twig
src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php

index dbae3ea73d10655b18fb6a916e6c22e161faabc9..898c291f2b5ea028cead23a7963674afcbdc13a1 100644 (file)
@@ -9,7 +9,7 @@ use Symfony\Component\HttpFoundation\JsonResponse;
 use Wallabag\CoreBundle\Entity\Config;
 use Wallabag\CoreBundle\Entity\User;
 use Wallabag\CoreBundle\Form\Type\ChangePasswordType;
-use Wallabag\CoreBundle\Form\Type\UserType;
+use Wallabag\CoreBundle\Form\Type\UserInformationType;
 use Wallabag\CoreBundle\Form\Type\NewUserType;
 use Wallabag\CoreBundle\Form\Type\RssType;
 use Wallabag\CoreBundle\Tools\Utils;
@@ -65,7 +65,7 @@ class ConfigController extends Controller
         }
 
         // handle changing user information
-        $userForm = $this->createForm(new UserType(), $user);
+        $userForm = $this->createForm(new UserInformationType(), $user);
         $userForm->handleRequest($request);
 
         if ($userForm->isValid()) {
index e75e3a8377bb21615ec7e93279f0c54ab306240e..63ec072c8fee9ced2cf4e4fa2ceb2eb66a50d699 100644 (file)
@@ -4,6 +4,7 @@ namespace Wallabag\CoreBundle\Entity;
 
 use Doctrine\Common\Collections\ArrayCollection;
 use Doctrine\ORM\Mapping as ORM;
+use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
 use Symfony\Component\Security\Core\User\UserInterface;
 use Symfony\Component\Security\Core\User\AdvancedUserInterface;
 use Symfony\Component\Validator\Constraints as Assert;
@@ -17,6 +18,9 @@ use JMS\Serializer\Annotation\Expose;
  * @ORM\Entity(repositoryClass="Wallabag\CoreBundle\Repository\UserRepository")
  * @ORM\HasLifecycleCallbacks()
  * @ExclusionPolicy("all")
+ *
+ * @UniqueEntity("email")
+ * @UniqueEntity("username")
  */
 class User implements AdvancedUserInterface, \Serializable
 {
similarity index 87%
rename from src/Wallabag/CoreBundle/Form/Type/UserType.php
rename to src/Wallabag/CoreBundle/Form/Type/UserInformationType.php
index b479a0b5817e179fb017f5e3a5a03fbd879bbc1f..617722dbf4210e6ac5dfa9b82960b37146ae6ddf 100644 (file)
@@ -5,12 +5,11 @@ use Symfony\Component\Form\AbstractType;
 use Symfony\Component\Form\FormBuilderInterface;
 use Symfony\Component\OptionsResolver\OptionsResolverInterface;
 
-class UserType extends AbstractType
+class UserInformationType extends AbstractType
 {
     public function buildForm(FormBuilderInterface $builder, array $options)
     {
         $builder
-            ->add('username', 'text')
             ->add('name', 'text')
             ->add('email', 'text')
             ->add('save', 'submit')
@@ -26,6 +25,6 @@ class UserType extends AbstractType
 
     public function getName()
     {
-        return 'user';
+        return 'update_user';
     }
 }
index f2a98dfbf26a4700070b71542ba10d9fce31a5c1..c90bb2e3b97db79667d4f6fe6c46d9caddc8d63c 100644 (file)
     <form action="{{ path('config') }}" method="post" {{ form_enctype(form.user) }}>
         {{ form_errors(form.user) }}
 
-        <fieldset class="w500p inline">
-            <div class="row">
-                {{ form_label(form.user.username) }}
-                {{ form_errors(form.user.username) }}
-                {{ form_widget(form.user.username) }}
-            </div>
-        </fieldset>
-
         <fieldset class="w500p inline">
             <div class="row">
                 {{ form_label(form.user.name) }}
index 11c86423da2348fa1f17e201af8d1d3aff32f453..5030bcbd5f561d5c9c306e718b39086eb6857129 100644 (file)
@@ -27,7 +27,7 @@ class ConfigControllerTest extends WallabagTestCase
 
         $this->assertCount(1, $crawler->filter('button[id=config_save]'));
         $this->assertCount(1, $crawler->filter('button[id=change_passwd_save]'));
-        $this->assertCount(1, $crawler->filter('button[id=user_save]'));
+        $this->assertCount(1, $crawler->filter('button[id=update_user_save]'));
         $this->assertCount(1, $crawler->filter('button[id=new_user_save]'));
         $this->assertCount(1, $crawler->filter('button[id=rss_config_save]'));
     }
@@ -189,25 +189,15 @@ class ConfigControllerTest extends WallabagTestCase
         return array(
             array(
                 array(
-                    'user[username]' => '',
-                    'user[name]' => '',
-                    'user[email]' => '',
+                    'update_user[name]' => '',
+                    'update_user[email]' => '',
                 ),
                 'This value should not be blank.',
             ),
             array(
                 array(
-                    'user[username]' => 'ad',
-                    'user[name]' => '',
-                    'user[email]' => '',
-                ),
-                'This value is too short.',
-            ),
-            array(
-                array(
-                    'user[username]' => 'admin',
-                    'user[name]' => '',
-                    'user[email]' => 'test',
+                    'update_user[name]' => '',
+                    'update_user[email]' => 'test',
                 ),
                 'This value is not a valid email address.',
             ),
@@ -226,7 +216,7 @@ class ConfigControllerTest extends WallabagTestCase
 
         $this->assertEquals(200, $client->getResponse()->getStatusCode());
 
-        $form = $crawler->filter('button[id=user_save]')->form();
+        $form = $crawler->filter('button[id=update_user_save]')->form();
 
         $crawler = $client->submit($form, $data);
 
@@ -245,12 +235,11 @@ class ConfigControllerTest extends WallabagTestCase
 
         $this->assertEquals(200, $client->getResponse()->getStatusCode());
 
-        $form = $crawler->filter('button[id=user_save]')->form();
+        $form = $crawler->filter('button[id=update_user_save]')->form();
 
         $data = array(
-            'user[username]' => 'admin',
-            'user[name]' => 'new name',
-            'user[email]' => 'admin@wallabag.io',
+            'update_user[name]' => 'new name',
+            'update_user[email]' => 'admin@wallabag.io',
         );
 
         $client->submit($form, $data);
@@ -298,6 +287,14 @@ class ConfigControllerTest extends WallabagTestCase
                 ),
                 'Password should by at least',
             ),
+            array(
+                array(
+                    'new_user[username]' => 'admin',
+                    'new_user[password]' => 'wallacewallace',
+                    'new_user[email]' => 'wallace@wallace.me',
+                ),
+                'This value is already used',
+            ),
         );
     }