diff --git a/client/views/account/accountProfile.coffee b/client/views/account/accountProfile.coffee index 575e6ab04de..9bd7703bb67 100644 --- a/client/views/account/accountProfile.coffee +++ b/client/views/account/accountProfile.coffee @@ -19,36 +19,53 @@ Template.accountProfile.onCreated -> @clearForm = -> @find('#language').value = localStorage.getItem('userLanguage') + @find('#oldPassword').value = '' @find('#password').value = '' + @changePassword = (oldPassword, newPassword, callback) -> + if not oldPassword and not newPassword + return callback() + + else if !!oldPassword ^ !!newPassword + toastr.warning t('Old_and_new_password_required') + + else if newPassword and oldPassword + Accounts.changePassword oldPassword, newPassword, (error) -> + if error + toastr.error t('Incorrect_Password') + else + return callback() + @save = -> instance = @ - data = {} - reload = false - selectedLanguage = $('#language').val() - - if localStorage.getItem('userLanguage') isnt selectedLanguage - localStorage.setItem 'userLanguage', selectedLanguage - data.language = selectedLanguage - reload = true - - if _.trim $('#password').val() - data.password = _.trim $('#password').val() - - if _.trim $('#username').val() - data.username = _.trim $('#username').val() - - Meteor.call 'saveUserProfile', data, (error, results) -> - if results - toastr.success t('Profile_saved_successfully') - instance.clearForm() - if reload - setTimeout -> - Meteor._reload.reload() - , 1000 - - if error - toastr.error error.reason + + oldPassword = _.trim($('#oldPassword').val()) + newPassword = _.trim($('#password').val()) + + instance.changePassword oldPassword, newPassword, -> + data = {} + reload = false + selectedLanguage = $('#language').val() + + if localStorage.getItem('userLanguage') isnt selectedLanguage + localStorage.setItem 'userLanguage', selectedLanguage + data.language = selectedLanguage + reload = true + + if _.trim $('#username').val() + data.username = _.trim $('#username').val() + + Meteor.call 'saveUserProfile', data, (error, results) -> + if results + toastr.success t('Profile_saved_successfully') + instance.clearForm() + if reload + setTimeout -> + Meteor._reload.reload() + , 1000 + + if error + toastr.error error.reason Template.accountProfile.onRendered -> Tracker.afterFlush -> diff --git a/client/views/account/accountProfile.html b/client/views/account/accountProfile.html index d2ea2b9b0f9..9af06a11572 100644 --- a/client/views/account/accountProfile.html +++ b/client/views/account/accountProfile.html @@ -15,6 +15,12 @@ +