changeset 1597:019026a8cf67 beta

implements #237 added password confirmation for my account and admin edit user.
author Marcin Kuzminski <marcin@python-works.com>
date Tue, 25 Oct 2011 03:02:28 +0200
parents 089ef495e9dd
children e9a19edfeba6 bbe3f2ba52ca 95c3e33ef32e
files rhodecode/model/forms.py rhodecode/templates/admin/users/user_add.html rhodecode/templates/admin/users/user_edit.html rhodecode/templates/admin/users/user_edit_my_account.html rhodecode/tests/functional/test_admin_settings.py rhodecode/tests/functional/test_admin_users.py
diffstat 6 files changed, 47 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/model/forms.py	Mon Oct 24 23:28:04 2011 +0200
+++ b/rhodecode/model/forms.py	Tue Oct 25 03:02:28 2011 +0200
@@ -185,8 +185,9 @@
 class ValidPasswordsMatch(formencode.validators.FancyValidator):
 
     def validate_python(self, value, state):
-
-        if value['password'] != value['password_confirmation']:
+        
+        pass_val = value.get('password') or value.get('new_password')
+        if pass_val != value['password_confirmation']:
             e_dict = {'password_confirmation':
                    _('Passwords do not match')}
             raise formencode.Invalid('', value, state, error_dict=e_dict)
@@ -497,8 +498,6 @@
                                 'tooShort':_('Enter %(min)i characters or more')}
                                 )
 
-
-    #chained validators have access to all data
     chained_validators = [ValidAuth]
 
 def UserForm(edit=False, old_data={}):
@@ -509,15 +508,18 @@
                        ValidUsername(edit, old_data))
         if edit:
             new_password = All(UnicodeString(strip=True, min=6, not_empty=False))
+            password_confirmation = All(UnicodeString(strip=True, min=6, not_empty=False))
             admin = StringBoolean(if_missing=False)
         else:
             password = All(UnicodeString(strip=True, min=6, not_empty=True))
+            password_confirmation = All(UnicodeString(strip=True, min=6, not_empty=False))
+            
         active = StringBoolean(if_missing=False)
         name = UnicodeString(strip=True, min=1, not_empty=True)
         lastname = UnicodeString(strip=True, min=1, not_empty=True)
         email = All(Email(not_empty=True), UniqSystemEmail(old_data))
 
-        chained_validators = [ValidPassword]
+        chained_validators = [ValidPasswordsMatch, ValidPassword]
 
     return _UserForm
 
--- a/rhodecode/templates/admin/users/user_add.html	Mon Oct 24 23:28:04 2011 +0200
+++ b/rhodecode/templates/admin/users/user_add.html	Tue Oct 25 03:02:28 2011 +0200
@@ -44,7 +44,16 @@
                     ${h.password('password',class_='small')}
                 </div>
              </div>
-            
+             
+             <div class="field">
+                <div class="label">
+                    <label for="password_confirmation">${_('Password confirmation')}:</label>
+                </div>
+                <div class="input">
+                    ${h.password('password_confirmation',class_="small",autocomplete="off")}
+                </div>
+             </div>    
+                         
              <div class="field">
                 <div class="label">
                     <label for="name">${_('First Name')}:</label>
--- a/rhodecode/templates/admin/users/user_edit.html	Mon Oct 24 23:28:04 2011 +0200
+++ b/rhodecode/templates/admin/users/user_edit.html	Tue Oct 25 03:02:28 2011 +0200
@@ -68,7 +68,16 @@
                     ${h.password('new_password',class_='medium',autocomplete="off")}
                 </div>
              </div>
-            
+             
+             <div class="field">
+                <div class="label">
+                    <label for="password_confirmation">${_('New password confirmation')}:</label>
+                </div>
+                <div class="input">
+                    ${h.password('password_confirmation',class_="medium",autocomplete="off")}
+                </div>
+             </div>
+                         
              <div class="field">
                 <div class="label">
                     <label for="name">${_('First Name')}:</label>
--- a/rhodecode/templates/admin/users/user_edit_my_account.html	Mon Oct 24 23:28:04 2011 +0200
+++ b/rhodecode/templates/admin/users/user_edit_my_account.html	Tue Oct 25 03:02:28 2011 +0200
@@ -57,7 +57,16 @@
 	                    ${h.password('new_password',class_="medium",autocomplete="off")}
 	                </div>
 	             </div>
-	            
+                 
+                 <div class="field">
+                    <div class="label">
+                        <label for="password_confirmation">${_('New password confirmation')}:</label>
+                    </div>
+                    <div class="input">
+                        ${h.password('password_confirmation',class_="medium",autocomplete="off")}
+                    </div>
+                 </div>
+                 	            
 	             <div class="field">
 	                <div class="label">
 	                    <label for="name">${_('First Name')}:</label>
@@ -154,10 +163,12 @@
 		        </tr>
 		     %endfor
 	     %else:
+            <div style="padding:5px 0px 10px 0px;">
 	     	${_('No repositories yet')} 
 	     	%if h.HasPermissionAny('hg.admin','hg.create.repository')():
-	     		${h.link_to(_('create one now'),h.url('admin_settings_create_repository'))}
+	     		${h.link_to(_('create one now'),h.url('admin_settings_create_repository'),class_="ui-button-small")}
 	     	%endif
+            </div>
 	     %endif
 	     </tbody>
 	     </table>
--- a/rhodecode/tests/functional/test_admin_settings.py	Mon Oct 24 23:28:04 2011 +0200
+++ b/rhodecode/tests/functional/test_admin_settings.py	Tue Oct 25 03:02:28 2011 +0200
@@ -137,6 +137,7 @@
                                  params=dict(_method='put',
                                              username='test_admin',
                                              new_password=new_password,
+                                             password_confirmation = new_password,
                                              password='',
                                              name=new_name,
                                              lastname=new_lastname,
@@ -160,6 +161,7 @@
                                                             _method='put',
                                                             username='test_admin',
                                                             new_password=old_password,
+                                                            password_confirmation = old_password,
                                                             password='',
                                                             name=old_name,
                                                             lastname=old_lastname,
@@ -186,6 +188,7 @@
                                                             _method='put',
                                                             username='test_admin',
                                                             new_password='test12',
+                                                            password_confirmation = 'test122',
                                                             name='NewName',
                                                             lastname='NewLastname',
                                                             email=new_email,))
@@ -201,6 +204,7 @@
                                                             _method='put',
                                                             username='test_admin',
                                                             new_password='test12',
+                                                            password_confirmation = 'test122',
                                                             name='NewName',
                                                             lastname='NewLastname',
                                                             email=new_email,))
--- a/rhodecode/tests/functional/test_admin_users.py	Mon Oct 24 23:28:04 2011 +0200
+++ b/rhodecode/tests/functional/test_admin_users.py	Tue Oct 25 03:02:28 2011 +0200
@@ -16,12 +16,14 @@
         self.log_user()
         username = 'newtestuser'
         password = 'test12'
+        password_confirmation = password
         name = 'name'
         lastname = 'lastname'
         email = 'mail@mail.com'
 
         response = self.app.post(url('users'), {'username':username,
                                                'password':password,
+                                               'password_confirmation':password_confirmation,
                                                'name':name,
                                                'active':True,
                                                'lastname':lastname,
@@ -90,6 +92,7 @@
 
         response = self.app.post(url('users'), {'username':username,
                                                'password':password,
+                                               'password_confirmation':password,
                                                'name':name,
                                                'active':True,
                                                'lastname':lastname,