From b5127561ee91f72fc8304f30b9f0f2a0147732a4 Mon Sep 17 00:00:00 2001 From: Tasso Evangelista Date: Mon, 11 Jun 2018 16:37:09 -0300 Subject: [PATCH 1/2] Add input for confirm new password on edit account profile --- packages/rocketchat-i18n/i18n/en.i18n.json | 4 +++- .../client/accountProfile.html | 10 ++++++++- .../client/accountProfile.js | 22 ++++++++++++++++++- 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json index 56db7892fc21..e043e7328f4c 100644 --- a/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/packages/rocketchat-i18n/i18n/en.i18n.json @@ -1768,6 +1768,8 @@ "New_messages": "New messages", "New_password": "New Password", "New_Password_Placeholder": "Please enter new password...", + "Confirm_new_password": "Confirm New Password", + "Confirm_New_Password_Placeholder": "Please re-enter new password...", "New_role": "New role", "New_Room_Notification": "New Room Notification", "New_Trigger": "New Trigger", @@ -2701,4 +2703,4 @@ "Your_push_was_sent_to_s_devices": "Your push was sent to %s devices", "Your_server_link": "Your server link", "Your_workspace_is_ready": "Your workspace is ready to use 🎉" -} \ No newline at end of file +} diff --git a/packages/rocketchat-ui-account/client/accountProfile.html b/packages/rocketchat-ui-account/client/accountProfile.html index d8300889e5c4..bf7a4f4438e3 100644 --- a/packages/rocketchat-ui-account/client/accountProfile.html +++ b/packages/rocketchat-ui-account/client/accountProfile.html @@ -137,7 +137,7 @@ {{/unless}} {{/with}} -
+
{{#with canChange=allowPasswordChange}}
+ {{#if canConfirmNewPassword}} + + {{/if}} {{# unless canChange}}
{{_ 'Password_Change_Disabled'}}
{{/unless}} diff --git a/packages/rocketchat-ui-account/client/accountProfile.js b/packages/rocketchat-ui-account/client/accountProfile.js index a374f4df6ffa..0650bc3b36c5 100644 --- a/packages/rocketchat-ui-account/client/accountProfile.js +++ b/packages/rocketchat-ui-account/client/accountProfile.js @@ -8,6 +8,13 @@ const validateUsername = (username) => { return reg.test(username); }; const validateName = (name) => name.length; +const validatePassword = (password, confirmPassword) => { + if (!confirmPassword) { + return true; + } + + return password === confirmPassword; +}; const filterNames = (old) => { const reg = new RegExp(`^${ RocketChat.settings.get('UTF8_Names_Validation') }$`); return [...old.replace(' ', '')].filter(f => reg.test(f)).join(''); @@ -51,6 +58,10 @@ Template.accountProfile.helpers({ nameInvalid() { return !validateName(Template.instance().realname.get()); }, + confirmPasswordInvalid() { + const { password, confirmPassword } = Template.instance(); + return !validatePassword(password.get(), confirmPassword.get()); + }, selectUrl() { return Template.instance().url.get().trim() ? '' : 'disabled'; }, @@ -86,6 +97,7 @@ Template.accountProfile.helpers({ const realname = instance.realname.get(); const username = instance.username.get(); const password = instance.password.get(); + const confirmPassword = instance.confirmPassword.get(); const email = instance.email.get(); const usernameAvaliable = instance.usernameAvaliable.get(); const avatar = instance.avatar.get(); @@ -100,7 +112,7 @@ Template.accountProfile.helpers({ return; } } - if (!avatar && user.name === realname && user.username === username && user.emails[0].address === email && !password) { + if (!avatar && user.name === realname && user.username === username && user.emails[0].address === email && (!password || password !== confirmPassword)) { return ret; } if (!validateEmail(email) || (!validateUsername(username) || usernameAvaliable !== true) || !validateName(realname)) { @@ -138,6 +150,10 @@ Template.accountProfile.helpers({ allowPasswordChange() { return RocketChat.settings.get('Accounts_AllowPasswordChange'); }, + canConfirmNewPassword() { + const password = Template.instance().password.get(); + return RocketChat.settings.get('Accounts_AllowPasswordChange') && password && password !== ''; + }, allowAvatarChange() { return RocketChat.settings.get('Accounts_AllowUserAvatarChange'); }, @@ -154,6 +170,7 @@ Template.accountProfile.onCreated(function() { self.email = new ReactiveVar(user.emails[0].address); self.username = new ReactiveVar(user.username); self.password = new ReactiveVar; + self.confirmPassword = new ReactiveVar; self.suggestions = new ReactiveVar; self.avatar = new ReactiveVar; self.url = new ReactiveVar(''); @@ -348,6 +365,9 @@ Template.accountProfile.events({ 'input [name=password]'(e, instance) { instance.password.set(e.target.value); }, + 'input [name=confirm-password]'(e, instance) { + instance.confirmPassword.set(e.target.value); + }, 'submit form'(e, instance) { e.preventDefault(); const user = Meteor.user(); From 69f9261dc21f7756a28a66861db0491b9ee3eb20 Mon Sep 17 00:00:00 2001 From: Tasso Evangelista Date: Tue, 12 Jun 2018 17:22:07 -0300 Subject: [PATCH 2/2] Discard confirmation password in account profile page when password input is clean --- .../client/accountProfile.html | 4 +-- .../client/accountProfile.js | 28 +++++++++++-------- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/packages/rocketchat-ui-account/client/accountProfile.html b/packages/rocketchat-ui-account/client/accountProfile.html index bf7a4f4438e3..32761147d9c1 100644 --- a/packages/rocketchat-ui-account/client/accountProfile.html +++ b/packages/rocketchat-ui-account/client/accountProfile.html @@ -137,7 +137,7 @@ {{/unless}}
{{/with}} -
+
{{#with canChange=allowPasswordChange}}