diff --git a/src/Umbraco.Web/umbraco.presentation/umbraco/create/member.ascx.cs b/src/Umbraco.Web/umbraco.presentation/umbraco/create/member.ascx.cs
index 1dc60aad93..a8b1661266 100644
--- a/src/Umbraco.Web/umbraco.presentation/umbraco/create/member.ascx.cs
+++ b/src/Umbraco.Web/umbraco.presentation/umbraco/create/member.ascx.cs
@@ -123,7 +123,7 @@ namespace umbraco.cms.presentation.create.controls
///
protected void EmailExistsCheck(object sender, ServerValidateEventArgs e)
{
- if (Email.Text != "" && Member.GetMemberFromEmail(Email.Text.ToLower()) != null)
+ if (Email.Text != "" && Member.GetMemberFromEmail(Email.Text.ToLower()) != null && Membership.Providers[Member.UmbracoMemberProviderName].RequiresUniqueEmail)
e.IsValid = false;
else
e.IsValid = true;
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 8eb6d893ef..21161c31ca 100644
--- a/src/Umbraco.Web/umbraco.presentation/umbraco/members/EditMember.aspx.cs
+++ b/src/Umbraco.Web/umbraco.presentation/umbraco/members/EditMember.aspx.cs
@@ -28,6 +28,7 @@ namespace umbraco.cms.presentation.members
protected PlaceHolder MemberPasswordTxt = new PlaceHolder();
protected TextBox MemberEmail = new TextBox();
+ protected CustomValidator MemberEmailExistCheck = new CustomValidator();
protected controls.DualSelectbox _memberGroups = new controls.DualSelectbox();
@@ -65,8 +66,15 @@ namespace umbraco.cms.presentation.members
MemberLoginNameVal.EnableClientScript = false;
MemberLoginNameVal.Display = ValidatorDisplay.Dynamic;
+ 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(ui.Text("login"), ph);
_contentControl.PropertiesPane.addProperty(ui.Text("password"), MemberPasswordTxt);
+ _contentControl.PropertiesPane.addProperty("", MemberEmailExistCheck);
_contentControl.PropertiesPane.addProperty("Email", MemberEmail);
}
else
@@ -132,6 +140,14 @@ namespace umbraco.cms.presentation.members
}
+ void MemberEmailExistCheck_ServerValidate(object source, ServerValidateEventArgs args)
+ {
+ if (MemberEmail.Text != "" && Member.GetMemberFromEmail(MemberEmail.Text.ToLower()) != null && Membership.Providers[Member.UmbracoMemberProviderName].RequiresUniqueEmail)
+ args.IsValid = false;
+ else
+ args.IsValid = true;
+ }
+
void MenuSaveClick(object sender, ImageClickEventArgs e)
{
diff --git a/src/umbraco.cms/businesslogic/member/Member.cs b/src/umbraco.cms/businesslogic/member/Member.cs
index 918327564d..11594eba23 100644
--- a/src/umbraco.cms/businesslogic/member/Member.cs
+++ b/src/umbraco.cms/businesslogic/member/Member.cs
@@ -222,11 +222,13 @@ namespace umbraco.cms.businesslogic.member
throw new ArgumentException("The loginname must be different from an empty string", "loginName");
// Test for e-mail
- if (Email != "" && Member.GetMemberFromEmail(Email) != null)
+ if (Email != "" && Member.GetMemberFromEmail(Email) != null && Membership.Providers[UmbracoMemberProviderName].RequiresUniqueEmail)
throw new Exception(String.Format("Duplicate Email! A member with the e-mail {0} already exists", Email));
else if (Member.GetMemberFromLoginName(loginName) != null)
throw new Exception(String.Format("Duplicate User name! A member with the user name {0} already exists", loginName));
+ // Lowercased to prevent duplicates
+ Email = Email.ToLowerInvariant();
Guid newId = Guid.NewGuid();
//create the cms node first
@@ -292,7 +294,7 @@ namespace umbraco.cms.businesslogic.member
}
///
- /// Retrieve a Member given an email
+ /// Retrieve a Member given an email, the first if there multiple members with same email
///
/// Used when authentifying the Member
///
@@ -306,7 +308,7 @@ namespace umbraco.cms.businesslogic.member
object o = SqlHelper.ExecuteScalar