diff --git a/src/Umbraco.Web.UI.Client/src/common/security/interceptor.js b/src/Umbraco.Web.UI.Client/src/common/security/interceptor.js index 05bab31baf..56e0eb3041 100644 --- a/src/Umbraco.Web.UI.Client/src/common/security/interceptor.js +++ b/src/Umbraco.Web.UI.Client/src/common/security/interceptor.js @@ -29,6 +29,24 @@ angular.module('umbraco.security.interceptor', ['umbraco.security.retryQueue']) return $injector.get('$http')(originalResponse.config); }); } + else if (originalResponse.status === 404) { + + //a 404 indicates that the request was not found - this could be due to a non existing url, or it could + //be due to accessing a url with a parameter that doesn't exist, either way we should notifiy the user about it + + var errMsg = "The URL returned a 404 (not found):
" + originalResponse.config.url.split('?')[0] + ""; + if (originalResponse.data && originalResponse.data.ExceptionMessage) { + errMsg += "
with error:
" + originalResponse.data.ExceptionMessage + ""; + } + if (originalResponse.config.data) { + errMsg += "
with data:
" + angular.toJson(originalResponse.config.data) + "
Contact your administrator for information."; + } + + notifications.error( + "Request error", + errMsg); + + } else if (originalResponse.status === 403) { //if the status was a 403 it means the user didn't have permission to do what the request was trying to do. //How do we deal with this now, need to tell the user somehow that they don't have permission to do the thing that was diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/changepassword/changepassword.controller.js b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/changepassword/changepassword.controller.js index 97eb75241b..aa88fdfdf4 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/changepassword/changepassword.controller.js +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/changepassword/changepassword.controller.js @@ -102,7 +102,9 @@ angular.module("umbraco").controller("Umbraco.PropertyEditors.ChangePasswordCont }; $scope.showOldPass = function() { - return $scope.model.config.hasPassword && !$scope.model.config.enablePasswordRetrieval && !$scope.model.value.reset; + return $scope.model.config.hasPassword && + !$scope.model.config.allowManuallyChangingPassword && + !$scope.model.config.enablePasswordRetrieval && !$scope.model.value.reset; }; $scope.showNewPass = function () { @@ -117,8 +119,4 @@ angular.module("umbraco").controller("Umbraco.PropertyEditors.ChangePasswordCont return $scope.model.config.disableToggle !== true && $scope.model.config.hasPassword; }; - $scope.oldPassRequired = function() { - return !$scope.model.value.reset && $scope.model.config.hasPassword && !$scope.model.config.enablePasswordRetrieval; - }; - }); diff --git a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/changepassword/changepassword.html b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/changepassword/changepassword.html index b86f066546..0dbb234acd 100644 --- a/src/Umbraco.Web.UI.Client/src/views/propertyeditors/changepassword/changepassword.html +++ b/src/Umbraco.Web.UI.Client/src/views/propertyeditors/changepassword/changepassword.html @@ -22,7 +22,7 @@ Required diff --git a/src/Umbraco.Web/MembershipProviderExtensions.cs b/src/Umbraco.Web/MembershipProviderExtensions.cs index 16c1eddaa2..f33e9f375c 100644 --- a/src/Umbraco.Web/MembershipProviderExtensions.cs +++ b/src/Umbraco.Web/MembershipProviderExtensions.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web.Security; +using Umbraco.Core.Security; namespace Umbraco.Web { @@ -17,12 +18,15 @@ namespace Umbraco.Web public static IDictionary GetConfiguration( this MembershipProvider membershipProvider) { + var baseProvider = membershipProvider as MembershipProviderBase; + return new Dictionary { {"minPasswordLength", membershipProvider.MinRequiredPasswordLength}, {"enableReset", membershipProvider.EnablePasswordReset}, {"enablePasswordRetrieval", membershipProvider.EnablePasswordRetrieval}, - {"requiresQuestionAnswer", membershipProvider.RequiresQuestionAndAnswer} + {"requiresQuestionAnswer", membershipProvider.RequiresQuestionAndAnswer}, + {"allowManuallyChangingPassword", baseProvider != null && baseProvider.AllowManuallyChangingPassword} //TODO: Inject the other parameters in here to change the behavior of this control - based on the membership provider settings. }; } diff --git a/src/Umbraco.Web/WebApi/Filters/ContentItemValidationHelper.cs b/src/Umbraco.Web/WebApi/Filters/ContentItemValidationHelper.cs index fccbe9dc68..d9be926ce7 100644 --- a/src/Umbraco.Web/WebApi/Filters/ContentItemValidationHelper.cs +++ b/src/Umbraco.Web/WebApi/Filters/ContentItemValidationHelper.cs @@ -90,7 +90,7 @@ namespace Umbraco.Web.WebApi.Filters foreach (var p in postedItem.Properties) { - if (postedItem.PersistedContent.Properties.Contains(p.Alias)) + if (postedItem.PersistedContent.Properties.Contains(p.Alias) == false) { //TODO: Do we return errors here ? If someone deletes a property whilst their editing then should we just //save the property data that remains? Or inform them they need to reload... not sure. This problem exists currently too i think.