summaryrefslogtreecommitdiffstats
path: root/client/components/users
diff options
context:
space:
mode:
Diffstat (limited to 'client/components/users')
-rw-r--r--client/components/users/userHeader.jade8
-rw-r--r--client/components/users/userHeader.js43
2 files changed, 49 insertions, 2 deletions
diff --git a/client/components/users/userHeader.jade b/client/components/users/userHeader.jade
index 84ef5a09..f67f82ee 100644
--- a/client/components/users/userHeader.jade
+++ b/client/components/users/userHeader.jade
@@ -36,6 +36,14 @@ template(name="editProfilePopup")
label
| {{_ 'initials'}}
input.js-profile-initials(type="text" value=profile.initials)
+ label
+ | {{_ 'email'}}
+ span.error.hide.email-taken
+ | {{_ 'error-email-taken'}}
+ if allowEmailChange
+ input.js-profile-email(type="email" value="{{emails.[0].address}}")
+ else
+ input.js-profile-email(type="email" value="{{emails.[0].address}}" readonly)
input.primary.wide(type="submit" value="{{_ 'save'}}")
template(name="editNotificationPopup")
diff --git a/client/components/users/userHeader.js b/client/components/users/userHeader.js
index 0580092e..90205ee1 100644
--- a/client/components/users/userHeader.js
+++ b/client/components/users/userHeader.js
@@ -20,18 +20,47 @@ Template.memberMenuPopup.events({
},
});
+Template.editProfilePopup.helpers({
+ allowEmailChange() {
+ return AccountSettings.findOne('accounts-allowEmailChange').booleanValue;
+ },
+});
+
Template.editProfilePopup.events({
submit(evt, tpl) {
evt.preventDefault();
const fullname = tpl.find('.js-profile-fullname').value.trim();
const username = tpl.find('.js-profile-username').value.trim();
const initials = tpl.find('.js-profile-initials').value.trim();
+ const email = tpl.find('.js-profile-email').value.trim();
+ let isChangeUserName = false;
+ let isChangeEmail = false;
Users.update(Meteor.userId(), {$set: {
'profile.fullname': fullname,
'profile.initials': initials,
}});
-
- if (username !== Meteor.user().username) {
+ isChangeUserName = username !== Meteor.user().username;
+ isChangeEmail = email.toLowerCase() !== Meteor.user().emails[0].address.toLowerCase();
+ if (isChangeUserName && isChangeEmail) {
+ Meteor.call('setUsernameAndEmail', username, email.toLowerCase(), function(error) {
+ const usernameMessageElement = tpl.$('.username-taken');
+ const emailMessageElement = tpl.$('.email-taken');
+ if (error) {
+ const errorElement = error.error;
+ if (errorElement === 'username-already-taken') {
+ usernameMessageElement.show();
+ emailMessageElement.hide();
+ } else if (errorElement === 'email-already-taken') {
+ usernameMessageElement.hide();
+ emailMessageElement.show();
+ }
+ } else {
+ usernameMessageElement.hide();
+ emailMessageElement.hide();
+ Popup.back();
+ }
+ });
+ } else if (isChangeUserName) {
Meteor.call('setUsername', username, function(error) {
const messageElement = tpl.$('.username-taken');
if (error) {
@@ -41,6 +70,16 @@ Template.editProfilePopup.events({
Popup.back();
}
});
+ } else if (isChangeEmail) {
+ Meteor.call('setEmail', email.toLowerCase(), function(error) {
+ const messageElement = tpl.$('.email-taken');
+ if (error) {
+ messageElement.show();
+ } else {
+ messageElement.hide();
+ Popup.back();
+ }
+ });
} else Popup.back();
},
});