Merge remote-tracking branch 'origin/6.2.0' into 7.0.2
Conflicts: src/Umbraco.Core/Security/MembershipProviderBase.cs src/Umbraco.Tests/Persistence/Repositories/UserRepositoryTest.cs src/Umbraco.Tests/TreesAndSections/SectionTests.cs
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);
|
||||
}
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ namespace Umbraco.Tests.Membership
|
||||
provider.Initialize("test", new NameValueCollection());
|
||||
|
||||
MembershipCreateStatus status;
|
||||
var user = provider.CreateUser("test", "test", "test", "test@test.com", "test", "test", true, "test", out status);
|
||||
var user = provider.CreateUser("test", "test", "testtest$1", "test@test.com", "test", "test", true, "test", out status);
|
||||
|
||||
Assert.IsNull(user);
|
||||
}
|
||||
@@ -75,7 +75,7 @@ namespace Umbraco.Tests.Membership
|
||||
provider.Initialize("test", new NameValueCollection { { "requiresUniqueEmail", "true" } });
|
||||
|
||||
MembershipCreateStatus status;
|
||||
var user = provider.CreateUser("test", "test", "test", "test@test.com", "test", "test", true, "test", out status);
|
||||
var user = provider.CreateUser("test", "test", "testtest$1", "test@test.com", "test", "test", true, "test", out status);
|
||||
|
||||
Assert.IsNull(user);
|
||||
}
|
||||
@@ -105,7 +105,7 @@ namespace Umbraco.Tests.Membership
|
||||
|
||||
|
||||
MembershipCreateStatus status;
|
||||
provider.CreateUser("test", "test", "test", "test@test.com", "test", "test", true, "test", out status);
|
||||
provider.CreateUser("test", "test", "testtest$1", "test@test.com", "test", "test", true, "test", out status);
|
||||
|
||||
Assert.AreNotEqual("test", createdMember.PasswordAnswer);
|
||||
Assert.AreEqual(provider.EncryptString("test"), createdMember.PasswordAnswer);
|
||||
@@ -137,11 +137,11 @@ namespace Umbraco.Tests.Membership
|
||||
|
||||
|
||||
MembershipCreateStatus status;
|
||||
provider.CreateUser("test", "test", "test", "test@test.com", "test", "test", true, "test", out status);
|
||||
provider.CreateUser("test", "test", "testtest$1", "test@test.com", "test", "test", true, "test", out status);
|
||||
|
||||
Assert.AreNotEqual("test", createdMember.Password);
|
||||
var decrypted = provider.DecryptPassword(createdMember.Password);
|
||||
Assert.AreEqual("test", decrypted);
|
||||
Assert.AreEqual("testtest$1", decrypted);
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -170,13 +170,13 @@ namespace Umbraco.Tests.Membership
|
||||
|
||||
|
||||
MembershipCreateStatus status;
|
||||
provider.CreateUser("test", "test", "test", "test@test.com", "test", "test", true, "test", out status);
|
||||
provider.CreateUser("test", "test", "testtest$1", "test@test.com", "test", "test", true, "test", out status);
|
||||
|
||||
Assert.AreNotEqual("test", createdMember.Password);
|
||||
|
||||
string salt;
|
||||
var storedPassword = provider.StoredPassword(createdMember.Password, out salt);
|
||||
var hashedPassword = provider.EncryptOrHashPassword("test", salt);
|
||||
var hashedPassword = provider.EncryptOrHashPassword("testtest$1", salt);
|
||||
Assert.AreEqual(hashedPassword, storedPassword);
|
||||
}
|
||||
|
||||
|
||||
@@ -134,8 +134,8 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
var resolved = (User)repository.Get((int)user.Id);
|
||||
|
||||
resolved.Name = "New Name";
|
||||
//the db column is not used, default permissions are taken from the user type's permissions, this is a getter only
|
||||
//resolved.DefaultPermissions = "ZYX";
|
||||
//the db column is not used, default permissions are taken from the user type's permissions, this is a getter only
|
||||
//resolved.DefaultPermissions = "ZYX";
|
||||
resolved.Language = "fr";
|
||||
resolved.IsApproved = false;
|
||||
resolved.Password = "new";
|
||||
@@ -153,7 +153,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Assert
|
||||
Assert.That(updatedItem.Id, Is.EqualTo(resolved.Id));
|
||||
Assert.That(updatedItem.Name, Is.EqualTo(resolved.Name));
|
||||
//Assert.That(updatedItem.DefaultPermissions, Is.EqualTo(resolved.DefaultPermissions));
|
||||
//Assert.That(updatedItem.DefaultPermissions, Is.EqualTo(resolved.DefaultPermissions));
|
||||
Assert.That(updatedItem.Language, Is.EqualTo(resolved.Language));
|
||||
Assert.That(updatedItem.IsApproved, Is.EqualTo(resolved.IsApproved));
|
||||
Assert.That(updatedItem.Password, Is.EqualTo(resolved.Password));
|
||||
|
||||
Reference in New Issue
Block a user