public override MembershipUser CreateUser(string username,
string password,
string email,
string passwordQuestion,
string passwordAnswer,
bool isApproved,
object providerUserKey,
out MembershipCreateStatus status)
{
ValidatePasswordEventArgs args =
new ValidatePasswordEventArgs(username, password, true);
OnValidatingPassword(args);
if (args.Cancel)
{
status = MembershipCreateStatus.InvalidPassword;
return null;
}
if (RequiresUniqueEmail && GetUserNameByEmail(email) != "")
{
status = MembershipCreateStatus.DuplicateEmail;
return null;
}
MembershipUser u = GetUser(username, false);
if (u == null)
{
DateTime createDate = DateTime.Now;
if (providerUserKey == null)
{
providerUserKey = Guid.NewGuid();
}
else
{
if (!(providerUserKey is Guid))
{
status = MembershipCreateStatus.InvalidProviderUserKey;
return null;
}
}
SqlConnection conn = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand("INSERT INTO Users " +
" (PKID, Username, Password, Email, PasswordQuestion, " +
" PasswordAnswer, IsApproved," +
" Comment, CreationDate, LastPasswordChangedDate, LastActivityDate," +
" ApplicationName, IsLockedOut, LastLockedOutDate," +
" FailedPasswordAttemptCount, FailedPasswordAttemptWindowStart, " +
" FailedPasswordAnswerAttemptCount, FailedPasswordAnswerAttemptWindowStart)" +
" Values(@PKID, @Username, @Password, @Email, @PasswordQuestion, " +
" @PasswordAnswer, @IsApproved, @Comment, @CreationDate, @LastPasswordChangedDate," +
" @LastActivityDate, @ApplicationName, @IsLockedOut, @LastLockedOutDate," +
" @FailedPasswordAttemptCount, @FailedPasswordAttemptWindowStart, " +
" @FailedPasswordAnswerAttemptCount, @FailedPasswordAnswerAttemptWindowStart)", conn);
cmd.Parameters.AddWithValue("@PKID", providerUserKey);
cmd.Parameters.AddWithValue("@Username",username);
cmd.Parameters.AddWithValue("@Password", EncodePassword(password));
cmd.Parameters.AddWithValue("@Email", email);
cmd.Parameters.AddWithValue("@PasswordQuestion", passwordQuestion);
cmd.Parameters.AddWithValue("@PasswordAnswer", EncodePassword(passwordAnswer));
cmd.Parameters.AddWithValue("@IsApproved", isApproved);
cmd.Parameters.AddWithValue("@Comment", "");
cmd.Parameters.AddWithValue("@CreationDate", createDate);
cmd.Parameters.AddWithValue("@LastPasswordChangedDate", createDate);
cmd.Parameters.AddWithValue("@LastActivityDate", createDate);
cmd.Parameters.AddWithValue("@ApplicationName", pApplicationName);
cmd.Parameters.AddWithValue("@IsLockedOut", false);
cmd.Parameters.AddWithValue("@LastLockedOutDate", createDate);
cmd.Parameters.AddWithValue("@FailedPasswordAttemptCount", 0);
cmd.Parameters.AddWithValue("@FailedPasswordAttemptWindowStart", createDate);
cmd.Parameters.AddWithValue("@FailedPasswordAnswerAttemptCount", 0);
cmd.Parameters.AddWithValue("@FailedPasswordAnswerAttemptWindowStart", createDate);
try
{
conn.Open();
int recAdded = cmd.ExecuteNonQuery();
if (recAdded > 0)
{
status = MembershipCreateStatus.Success;
}
else
{
status = MembershipCreateStatus.UserRejected;
}
}
catch (SqlException e)
{
if (WriteExceptionsToEventLog)
{
WriteToEventLog(e, "CreateUser");
}
status = MembershipCreateStatus.ProviderError;
}
finally
{
conn.Close();
}
return GetUser(username, false);
}
else
{
status = MembershipCreateStatus.DuplicateUserName;
}
return null;
}