Merge pull request #33 from bokmadsen/6.0.7

Bugfix for previous pullrequest "Duplicate e-mail addresses: U4-315, U4-...
This commit is contained in:
Sebastiaan Janssen
2013-06-26 02:43:34 -07:00
2 changed files with 23 additions and 6 deletions

View File

@@ -142,7 +142,15 @@ 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)
var oldEmail = MemberEmail.Text.ToLower();
var newEmail = _document.Email.ToLower();
var requireUniqueEmail = Membership.Providers[Member.UmbracoMemberProviderName].RequiresUniqueEmail;
var howManyMembersWithEmail = Member.GetMembersFromEmail(newEmail).Length;
if (((oldEmail == newEmail && howManyMembersWithEmail > 1) ||
(oldEmail != newEmail && howManyMembersWithEmail > 0))
&& requireUniqueEmail)
// If the value hasn't changed and there are more than 1 member with that email, then false
// If the value has changed and there are any member with that new email, then false
args.IsValid = false;
else
args.IsValid = true;

View File

@@ -228,7 +228,7 @@ namespace umbraco.cms.businesslogic.member
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();
Email = Email.ToLower();
Guid newId = Guid.NewGuid();
//create the cms node first
@@ -563,14 +563,23 @@ namespace umbraco.cms.businesslogic.member
}
set
{
var m = Member.GetMemberFromEmail(value);
if (m != null && Membership.Providers[UmbracoMemberProviderName].RequiresUniqueEmail)
var oldEmail = Email;
var newEmail = value.ToLower();
var requireUniqueEmail = Membership.Providers[UmbracoMemberProviderName].RequiresUniqueEmail;
var howManyMembersWithEmail = Member.GetMembersFromEmail(newEmail).Length;
if (((oldEmail == newEmail && howManyMembersWithEmail > 1) ||
(oldEmail != newEmail && howManyMembersWithEmail > 0))
&& requireUniqueEmail)
{
throw new Exception(String.Format("Duplicate Email! A member with the e-mail {0} already exists", value.ToLower()));
// If the value hasn't changed and there are more than 1 member with that email, then throw
// If the value has changed and there are any member with that new email, then throw
throw new Exception(String.Format("Duplicate Email! A member with the e-mail {0} already exists", newEmail));
}
SqlHelper.ExecuteNonQuery(
"update cmsMember set Email = @email where nodeId = @id",
SqlHelper.CreateParameter("@id", Id), SqlHelper.CreateParameter("@email", value.ToLower()));
SqlHelper.CreateParameter("@id", Id), SqlHelper.CreateParameter("@email", newEmail));
// Set the backing field to new value
m_Email = newEmail;
}
}
#endregion