fixes up the double member creation in the createuser method
This commit is contained in:
@@ -389,52 +389,69 @@ namespace Umbraco.Core.Security
|
||||
/// Ensures the ValidatingPassword event is executed before executing PerformCreateUser and performs basic membership provider validation of values.
|
||||
/// </remarks>
|
||||
public sealed override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
|
||||
{
|
||||
var valStatus = ValidateNewUser(username, password, email, passwordQuestion, passwordAnswer, isApproved, providerUserKey);
|
||||
if (valStatus != MembershipCreateStatus.Success)
|
||||
{
|
||||
status = valStatus;
|
||||
return null;
|
||||
}
|
||||
|
||||
return PerformCreateUser(username, password, email, passwordQuestion, passwordAnswer, isApproved, providerUserKey, out status);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Performs the validation of the information for creating a new user
|
||||
/// </summary>
|
||||
/// <param name="username"></param>
|
||||
/// <param name="password"></param>
|
||||
/// <param name="email"></param>
|
||||
/// <param name="passwordQuestion"></param>
|
||||
/// <param name="passwordAnswer"></param>
|
||||
/// <param name="isApproved"></param>
|
||||
/// <param name="providerUserKey"></param>
|
||||
/// <returns></returns>
|
||||
protected MembershipCreateStatus ValidateNewUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey)
|
||||
{
|
||||
var args = new ValidatePasswordEventArgs(username, password, true);
|
||||
OnValidatingPassword(args);
|
||||
if (args.Cancel)
|
||||
{
|
||||
status = MembershipCreateStatus.InvalidPassword;
|
||||
return null;
|
||||
return MembershipCreateStatus.InvalidPassword;
|
||||
}
|
||||
|
||||
// Validate password
|
||||
var passwordValidAttempt = IsPasswordValid(password, MinRequiredNonAlphanumericCharacters, PasswordStrengthRegularExpression, MinRequiredPasswordLength);
|
||||
if (passwordValidAttempt.Success == false)
|
||||
{
|
||||
status = MembershipCreateStatus.InvalidPassword;
|
||||
return null;
|
||||
return MembershipCreateStatus.InvalidPassword;
|
||||
}
|
||||
|
||||
// Validate email
|
||||
if (IsEmailValid(email) == false)
|
||||
{
|
||||
status = MembershipCreateStatus.InvalidEmail;
|
||||
return null;
|
||||
return MembershipCreateStatus.InvalidEmail;
|
||||
}
|
||||
|
||||
// Make sure username isn't all whitespace
|
||||
if (string.IsNullOrWhiteSpace(username.Trim()))
|
||||
{
|
||||
status = MembershipCreateStatus.InvalidUserName;
|
||||
return null;
|
||||
return MembershipCreateStatus.InvalidUserName;
|
||||
}
|
||||
|
||||
// Check password question
|
||||
if (string.IsNullOrWhiteSpace(passwordQuestion) && RequiresQuestionAndAnswer)
|
||||
{
|
||||
status = MembershipCreateStatus.InvalidQuestion;
|
||||
return null;
|
||||
return MembershipCreateStatus.InvalidQuestion;
|
||||
}
|
||||
|
||||
// Check password answer
|
||||
if (string.IsNullOrWhiteSpace(passwordAnswer) && RequiresQuestionAndAnswer)
|
||||
{
|
||||
status = MembershipCreateStatus.InvalidAnswer;
|
||||
return null;
|
||||
return MembershipCreateStatus.InvalidAnswer;
|
||||
}
|
||||
|
||||
return PerformCreateUser(username, password, email, passwordQuestion, passwordAnswer, isApproved, providerUserKey, out status);
|
||||
return MembershipCreateStatus.Success;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -48,8 +48,13 @@ namespace Umbraco.Core.Security
|
||||
public MembershipUser CreateUser(string memberTypeAlias, string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
|
||||
{
|
||||
//do the base validation first
|
||||
base.CreateUser(username, password, email, passwordQuestion, passwordAnswer, isApproved, providerUserKey, out status);
|
||||
|
||||
var valStatus = ValidateNewUser(username, password, email, passwordQuestion, passwordAnswer, isApproved, providerUserKey);
|
||||
if (valStatus != MembershipCreateStatus.Success)
|
||||
{
|
||||
status = valStatus;
|
||||
return null;
|
||||
}
|
||||
|
||||
return PerformCreateUser(memberTypeAlias, username, password, email, passwordQuestion, passwordAnswer, isApproved, providerUserKey, out status);
|
||||
}
|
||||
|
||||
|
||||
@@ -546,6 +546,10 @@ namespace Umbraco.Core.Services
|
||||
{
|
||||
repository.AddOrUpdate(member);
|
||||
uow.Commit();
|
||||
|
||||
//insert the xml
|
||||
var xml = member.ToXml();
|
||||
CreateAndSaveMemberXml(xml, member.Id, uow.Database);
|
||||
}
|
||||
|
||||
return member;
|
||||
|
||||
@@ -4,6 +4,7 @@ using System.Web.Caching;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Cache;
|
||||
using Umbraco.Core.Logging;
|
||||
using Umbraco.Core.Models.Membership;
|
||||
using Umbraco.Core.Models.Rdbms;
|
||||
using umbraco.DataLayer;
|
||||
using System.Collections.Generic;
|
||||
@@ -39,6 +40,23 @@ namespace umbraco.BusinessLogic
|
||||
get { return Application.SqlHelper; }
|
||||
}
|
||||
|
||||
internal User(IUser user)
|
||||
{
|
||||
_id = (int)user.Id;
|
||||
_userNoConsole = user.IsLockedOut;
|
||||
_userDisabled = user.IsApproved;
|
||||
_name = user.Name;
|
||||
_loginname = user.Username;
|
||||
_email = user.Email;
|
||||
_language = user.Language;
|
||||
_startnodeid = user.StartContentId;
|
||||
_startmediaid = user.StartMediaId;
|
||||
//this is cached, so should be 'ok'
|
||||
_usertype = UserType.GetUserType(user.UserType.Id);
|
||||
|
||||
_isInitialized = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="User"/> class.
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user