diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/currentuser.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/currentuser.resource.js index 5ac6591c42..233d510c3e 100644 --- a/src/Umbraco.Web.UI.Client/src/common/resources/currentuser.resource.js +++ b/src/Umbraco.Web.UI.Client/src/common/resources/currentuser.resource.js @@ -5,7 +5,7 @@ * * **/ -function currentUserResource($q, $http, umbRequestHelper) { +function currentUserResource($q, $http, umbRequestHelper, umbDataFormatter) { //the factory object returned return { @@ -38,8 +38,11 @@ function currentUserResource($q, $http, umbRequestHelper) { */ changePassword: function (changePasswordArgs) { - changePasswordArgs = _.omit(changePasswordArgs, "confirm"); - + changePasswordArgs = umbDataFormatter.formatChangePasswordModel(changePasswordArgs); + if (!changePasswordArgs) { + throw 'No password data to change'; + } + return umbRequestHelper.resourcePromise( $http.post( umbRequestHelper.getApiUrl( diff --git a/src/Umbraco.Web.UI.Client/src/common/services/umbdataformatter.service.js b/src/Umbraco.Web.UI.Client/src/common/services/umbdataformatter.service.js index 525d920b09..5fc2416927 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/umbdataformatter.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/umbdataformatter.service.js @@ -7,8 +7,30 @@ * @description A helper object used to format/transform JSON Umbraco data, mostly used for persisting data to the server **/ function umbDataFormatter() { + return { + formatChangePasswordModel: function(model) { + if (!model) { + return null; + } + var trimmed = _.omit(model, ["confirm", "generatedPassword"]) + + //ensure that the pass value is null if all child properties are null + var allNull = true; + var vals = _.values(trimmed); + for (var k = 0; k < vals.length; k++) { + if (vals[k] !== null && vals[k] !== undefined) { + allNull = false; + } + } + if (allNull) { + return null; + } + + return trimmed; + }, + formatContentTypePostData: function (displayModel, action) { //create the save model from the display model @@ -82,7 +104,7 @@ //create the save model from the display model var saveModel = _.pick(displayModel, 'id', 'parentId', 'name', 'username', 'culture', 'email', 'startContentIds', 'startMediaIds', 'userGroups', 'message', 'changePassword'); - saveModel.changePassword = _.omit(saveModel.changePassword, "confirm"); + saveModel.changePassword = this.formatChangePasswordModel(saveModel.changePassword); //make sure the userGroups are just a string array var currGroups = saveModel.userGroups; @@ -222,7 +244,8 @@ }); saveModel.email = propEmail.value; saveModel.username = propLogin.value; - saveModel.password = _.omit(propPass.value, "confirm"); + + saveModel.password = this.formatChangePasswordModel(propPass.value); var selectedGroups = []; for (var n in propGroups.value) { diff --git a/src/Umbraco.Web.UI.Client/src/views/components/users/change-password.html b/src/Umbraco.Web.UI.Client/src/views/components/users/change-password.html index 82d5594474..34c5db4d3c 100644 --- a/src/Umbraco.Web.UI.Client/src/views/components/users/change-password.html +++ b/src/Umbraco.Web.UI.Client/src/views/components/users/change-password.html @@ -67,10 +67,4 @@ -
 
-    {{config | json}}   
-    
-
-    {{passwordValues | json}} 
-