public override MembershipUser CreateUser(
string username,
string password,
string email,
string passwordQuestion,
string passwordAnswer,
bool isApproved,
object providerUserKey,
out MembershipCreateStatus status)
{
Condition.Requires(passwordQuestion, "passwordQuestion").IsNullOrWhiteSpace("not supported, expected null");
Condition.Requires(passwordAnswer, "passwordAnswer").IsNullOrWhiteSpace("not supported, expected null");
if (!this.ValidateUserName(username))
{
status = MembershipCreateStatus.InvalidUserName;
return null;
}
if (!this.ValidatePassword(password, username))
{
status = MembershipCreateStatus.InvalidPassword;
return null;
}
if (!this.ValidateProviderUserKey(providerUserKey, true))
{
status = MembershipCreateStatus.InvalidProviderUserKey;
return null;
}
if (!this.ValidateEmail(email))
{
status = MembershipCreateStatus.InvalidEmail;
return null;
}
var profile = new Dictionary<string, object>();
if (!this.HasEmailColumnDefined && !string.IsNullOrWhiteSpace(email))
{
status = MembershipCreateStatus.ProviderError;
return null;
}
if (this.RequiresUniqueEmail && this.HasEmailColumnDefined && !string.IsNullOrWhiteSpace(email))
{
var user = this.GetUserNameByEmail(email);
if (user != null)
{
status = MembershipCreateStatus.DuplicateEmail;
return null;
}
}
if (this.HasEmailColumnDefined)
{
profile.Add(this.userEmailColumn, email);
}
try
{
this.CreateUserAndAccount(username, password, !isApproved, profile);
}
catch (MembershipCreateUserException e)
{
status = e.StatusCode;
return null;
}
status = MembershipCreateStatus.Success;
return GetUser(username, false);
}