Browse Source

UI-2757: Improve password change experience for users (#29)

* UI-2757: Add context to change users passwords

* UI-2757: Add a confirmation field to check new password

* UI-2757: Set validation in code instead of markup

* UI-2757: Disable button once clicked to avoid click bomb
4.3
Joris Tirado 9 years ago
committed by GitHub
parent
commit
5572876234
3 changed files with 24 additions and 5 deletions
  1. +2
    -1
      i18n/en-US.json
  2. +14
    -2
      submodules/users/users.js
  3. +8
    -2
      views/users-changePassword.html

+ 2
- 1
i18n/en-US.json View File

@ -434,6 +434,7 @@
"dialogChangePassword": { "dialogChangePassword": {
"help": "You can set a new password by just typing any password you want, along with the Email address!", "help": "You can set a new password by just typing any password you want, along with the Email address!",
"password": "Password", "password": "Password",
"confirmPassword": "Re-type Password",
"passwordPlaceholder": "Password (Min. 6 characters)", "passwordPlaceholder": "Password (Min. 6 characters)",
"title": "Update Email and password", "title": "Update Email and password",
"username": "User's Email address", "username": "User's Email address",
@ -468,7 +469,7 @@
}, },
"editionForm": { "editionForm": {
"changePIN": "Change PIN", "changePIN": "Change PIN",
"changeUsername": "Change",
"changeUsername": "Change Credentials",
"firstName": "First Name", "firstName": "First Name",
"lastName": "Last Name", "lastName": "Last Name",
"role": "Role", "role": "Role",


+ 14
- 2
submodules/users/users.js View File

@ -937,8 +937,16 @@ define(function(require) {
monster.ui.validate(form, { monster.ui.validate(form, {
rules: { rules: {
'password': {
username: {
required: true
},
password: {
required: true,
minlength: 6 minlength: 6
},
confirm_password: {
required: true,
equalTo: '#inputPassword'
} }
} }
}); });
@ -957,10 +965,14 @@ define(function(require) {
}); });
passwordTemplate.find('.save-new-username').on('click', function() { passwordTemplate.find('.save-new-username').on('click', function() {
var formData = monster.ui.getFormData('form_new_username'),
var $saveButton = $(this),
formData = monster.ui.getFormData('form_new_username'),
userToSave = $.extend(true, {}, currentUser, formData); userToSave = $.extend(true, {}, currentUser, formData);
if (monster.ui.valid(form)) { if (monster.ui.valid(form)) {
$saveButton
.prop('disabled', true);
if (!currentUser.extra.differentEmail) { if (!currentUser.extra.differentEmail) {
userToSave.email = userToSave.username; userToSave.email = userToSave.username;
} }


+ 8
- 2
views/users-changePassword.html View File

@ -4,13 +4,19 @@
<div class="control-group"> <div class="control-group">
<label class="control-label" for="inputEmail">{{ i18n.users.dialogChangePassword.username }}</label> <label class="control-label" for="inputEmail">{{ i18n.users.dialogChangePassword.username }}</label>
<div class="controls"> <div class="controls">
<input required name="username" type="email" id="inputEmail" placeholder="Email" value="{{username}}">
<input name="username" type="email" id="inputEmail" placeholder="Email" value="{{username}}">
</div> </div>
</div> </div>
<div class="control-group"> <div class="control-group">
<label class="control-label" for="inputPassword">{{ i18n.users.dialogChangePassword.password }}</label> <label class="control-label" for="inputPassword">{{ i18n.users.dialogChangePassword.password }}</label>
<div class="controls"> <div class="controls">
<input required name="password" type="password" id="inputPassword" placeholder="{{ i18n.users.dialogChangePassword.passwordPlaceholder }}">
<input name="password" type="password" id="inputPassword" placeholder="{{ i18n.users.dialogChangePassword.passwordPlaceholder }}">
</div>
</div>
<div class="control-group">
<label class="control-label" for="confirm_password">{{ i18n.users.dialogChangePassword.confirmPassword }}</label>
<div class="controls">
<input name="confirm_password" type="password" id="confirm_password">
</div> </div>
</div> </div>
</form> </form>


Loading…
Cancel
Save