From 0d49a59cfe9079e13002d7a15f9cb2e97866a94e Mon Sep 17 00:00:00 2001 From: dprothero Date: Thu, 5 Sep 2013 15:15:40 -0700 Subject: [PATCH 1/2] Fix #U4-2796 Possible to have duplicate Login Name (Member.LoginName) for Umbraco Members --- .../umbraco/members/EditMember.aspx.cs | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/members/EditMember.aspx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/members/EditMember.aspx.cs index cf54379d96..83f0577120 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/members/EditMember.aspx.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/members/EditMember.aspx.cs @@ -26,6 +26,7 @@ namespace umbraco.cms.presentation.members protected TextBox MemberLoginNameTxt = new TextBox(); protected RequiredFieldValidator MemberLoginNameVal = new RequiredFieldValidator(); + protected CustomValidator MemberLoginNameExistCheck = new CustomValidator(); protected PlaceHolder MemberPasswordTxt = new PlaceHolder(); protected TextBox MemberEmail = new TextBox(); @@ -67,12 +68,19 @@ namespace umbraco.cms.presentation.members MemberLoginNameVal.EnableClientScript = false; MemberLoginNameVal.Display = ValidatorDisplay.Dynamic; + MemberLoginNameExistCheck.ErrorMessage = ui.Text("errorHandling", "errorExistsWithoutTab", "Login Name", BasePages.UmbracoEnsuredPage.CurrentUser); + MemberLoginNameExistCheck.EnableClientScript = false; + MemberLoginNameExistCheck.ValidateEmptyText = false; + MemberLoginNameExistCheck.ControlToValidate = MemberEmail.ID; + MemberLoginNameExistCheck.ServerValidate += MemberLoginNameExistCheck_ServerValidate; + MemberEmailExistCheck.ErrorMessage = ui.Text("errorHandling", "errorExistsWithoutTab", "E-mail", BasePages.UmbracoEnsuredPage.CurrentUser); MemberEmailExistCheck.EnableClientScript = false; MemberEmailExistCheck.ValidateEmptyText = false; MemberEmailExistCheck.ControlToValidate = MemberEmail.ID; MemberEmailExistCheck.ServerValidate += MemberEmailExistCheck_ServerValidate; + _contentControl.PropertiesPane.addProperty("", MemberLoginNameExistCheck); _contentControl.PropertiesPane.addProperty(ui.Text("login"), ph); _contentControl.PropertiesPane.addProperty(ui.Text("password"), MemberPasswordTxt); _contentControl.PropertiesPane.addProperty("", MemberEmailExistCheck); @@ -141,7 +149,18 @@ namespace umbraco.cms.presentation.members } - void MemberEmailExistCheck_ServerValidate(object source, ServerValidateEventArgs args) + void MemberLoginNameExistCheck_ServerValidate(object source, ServerValidateEventArgs args) + { + var oldLoginName = _document.LoginName.Replace(" ", "").ToLower(); + var newLoginName = MemberLoginNameTxt.Text.Replace(" ", "").ToLower(); + + if (oldLoginName != newLoginName && newLoginName != "" && Member.GetMemberFromLoginName(newLoginName) != null) + args.IsValid = false; + else + args.IsValid = true; + } + + void MemberEmailExistCheck_ServerValidate(object source, ServerValidateEventArgs args) { var oldEmail = _document.Email.ToLower(); var newEmail = MemberEmail.Text.ToLower(); From 6675bac1dc09a3f03e22181624d4ede00d87c722 Mon Sep 17 00:00:00 2001 From: dprothero Date: Thu, 5 Sep 2013 15:23:25 -0700 Subject: [PATCH 2/2] Fix #U4-2796 - fixed copy/paste error (does not affect functionality) --- .../umbraco.presentation/umbraco/members/EditMember.aspx.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/members/EditMember.aspx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/members/EditMember.aspx.cs index 83f0577120..d83d52f8e3 100644 --- a/src/Umbraco.Web/umbraco.presentation/umbraco/members/EditMember.aspx.cs +++ b/src/Umbraco.Web/umbraco.presentation/umbraco/members/EditMember.aspx.cs @@ -71,7 +71,7 @@ namespace umbraco.cms.presentation.members MemberLoginNameExistCheck.ErrorMessage = ui.Text("errorHandling", "errorExistsWithoutTab", "Login Name", BasePages.UmbracoEnsuredPage.CurrentUser); MemberLoginNameExistCheck.EnableClientScript = false; MemberLoginNameExistCheck.ValidateEmptyText = false; - MemberLoginNameExistCheck.ControlToValidate = MemberEmail.ID; + MemberLoginNameExistCheck.ControlToValidate = MemberLoginNameTxt.ID; MemberLoginNameExistCheck.ServerValidate += MemberLoginNameExistCheck_ServerValidate; MemberEmailExistCheck.ErrorMessage = ui.Text("errorHandling", "errorExistsWithoutTab", "E-mail", BasePages.UmbracoEnsuredPage.CurrentUser);