diff --git a/src/Orchard.Tests.Modules/Users/Services/UserServiceTests.cs b/src/Orchard.Tests.Modules/Users/Services/UserServiceTests.cs index eb2a0e57f..22b00929e 100644 --- a/src/Orchard.Tests.Modules/Users/Services/UserServiceTests.cs +++ b/src/Orchard.Tests.Modules/Users/Services/UserServiceTests.cs @@ -1,6 +1,4 @@ using System; -using System.Globalization; -using System.Threading; using System.Xml.Linq; using Autofac; using Moq; @@ -124,18 +122,5 @@ namespace Orchard.Tests.Modules.Users.Services { Assert.That(username, Is.EqualTo("foo")); Assert.That(validateByUtc, Is.GreaterThan(_clock.UtcNow)); } - - [Test] - public void VerifyUserUnicityTurkishTest() { - CultureInfo turkishCulture = new CultureInfo("tr-TR"); - Thread.CurrentThread.CurrentCulture = turkishCulture; - - // Create user lower case - _membershipService.CreateUser(new CreateUserParams("admin", "66554321", "foo@bar.com", "", "", true)); - _container.Resolve().ContentManager.Flush(); - - // Verify unicity with upper case which with turkish coallition would yeld admin with an i without the dot and therefore generate a different user name - Assert.That(_userService.VerifyUserUnicity("ADMIN", "differentfoo@bar.com"), Is.False); // should fail - } } } diff --git a/src/Orchard.Web/Modules/Orchard.Users/Controllers/AdminController.cs b/src/Orchard.Web/Modules/Orchard.Users/Controllers/AdminController.cs index 33df35610..b83896b2e 100644 --- a/src/Orchard.Web/Modules/Orchard.Users/Controllers/AdminController.cs +++ b/src/Orchard.Web/Modules/Orchard.Users/Controllers/AdminController.cs @@ -245,7 +245,7 @@ namespace Orchard.Users.Controllers { _siteService.GetSiteSettings().As().SuperUser = editModel.UserName; } - user.NormalizedUserName = editModel.UserName.ToUpperInvariant(); + user.NormalizedUserName = editModel.UserName.ToLower(); } } diff --git a/src/Orchard.Web/Modules/Orchard.Users/Migrations.cs b/src/Orchard.Web/Modules/Orchard.Users/Migrations.cs index 7b041f320..4175a2dc5 100644 --- a/src/Orchard.Web/Modules/Orchard.Users/Migrations.cs +++ b/src/Orchard.Web/Modules/Orchard.Users/Migrations.cs @@ -1,24 +1,15 @@ -using System.Collections.Generic; -using Orchard.ContentManagement; -using Orchard.Data.Migration; -using Orchard.Users.Models; +using Orchard.Data.Migration; namespace Orchard.Users { public class UsersDataMigration : DataMigrationImpl { - public UsersDataMigration(IOrchardServices orchardServices) { - Services = orchardServices; - } - - public IOrchardServices Services { get; set; } - public int Create() { SchemaBuilder.CreateTable("UserPartRecord", table => table .ContentPartRecord() .Column("UserName") .Column("Email") - .Column("NormalizedUserName", c => c.Unique()) + .Column("NormalizedUserName") .Column("Password") .Column("PasswordFormat") .Column("HashAlgorithm") @@ -41,17 +32,7 @@ namespace Orchard.Users { .Column("EnableLostPassword", c => c.WithDefault(false)) ); - return 2; - } - - public int UpdateFrom1() { - IEnumerable users = Services.ContentManager.Query().List(); - - foreach (UserPart user in users) { - user.NormalizedUserName = user.UserName.ToUpperInvariant(); - } - - return 2; + return 1; } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Users/Services/MembershipService.cs b/src/Orchard.Web/Modules/Orchard.Users/Services/MembershipService.cs index 44936191a..163685cc1 100644 --- a/src/Orchard.Web/Modules/Orchard.Users/Services/MembershipService.cs +++ b/src/Orchard.Web/Modules/Orchard.Users/Services/MembershipService.cs @@ -49,7 +49,7 @@ namespace Orchard.Users.Services { user.Record.UserName = createUserParams.Username; user.Record.Email = createUserParams.Email; - user.Record.NormalizedUserName = createUserParams.Username.ToUpperInvariant(); + user.Record.NormalizedUserName = createUserParams.Username.ToLower(); user.Record.HashAlgorithm = "SHA1"; SetPassword(user.Record, createUserParams.Password); @@ -97,24 +97,18 @@ namespace Orchard.Users.Services { } public IUser GetUser(string username) { - var higherName = username == null ? "" : username.ToUpperInvariant(); + var lowerName = username == null ? "" : username.ToLower(); - return _orchardServices.ContentManager.Query() - .Where(u => u.NormalizedUserName == higherName).List() - .FirstOrDefault(u => u.UserName.Equals(username, StringComparison.OrdinalIgnoreCase)); + return _orchardServices.ContentManager.Query().Where(u => u.NormalizedUserName == lowerName).List().FirstOrDefault(); } public IUser ValidateUser(string userNameOrEmail, string password) { - var higherName = userNameOrEmail == null ? "" : userNameOrEmail.ToUpperInvariant(); + var lowerName = userNameOrEmail == null ? "" : userNameOrEmail.ToLower(); - var user = _orchardServices.ContentManager.Query() - .Where(u => - u.NormalizedUserName == higherName || - u.Email == userNameOrEmail) - .List() - .FirstOrDefault(u => - u.UserName.Equals(userNameOrEmail, StringComparison.OrdinalIgnoreCase) || - u.Email == userNameOrEmail); + var user = _orchardServices.ContentManager.Query().Where(u => u.NormalizedUserName == lowerName).List().FirstOrDefault(); + + if (user == null) + user = _orchardServices.ContentManager.Query().Where(u => u.Email == lowerName).List().FirstOrDefault(); if ( user == null || ValidatePassword(user.As().Record, password) == false ) return null; diff --git a/src/Orchard.Web/Modules/Orchard.Users/Services/UserService.cs b/src/Orchard.Web/Modules/Orchard.Users/Services/UserService.cs index 90ad4cf19..6b84fb063 100644 --- a/src/Orchard.Web/Modules/Orchard.Users/Services/UserService.cs +++ b/src/Orchard.Web/Modules/Orchard.Users/Services/UserService.cs @@ -37,16 +37,13 @@ namespace Orchard.Users.Services { public ILogger Logger { get; set; } public bool VerifyUserUnicity(string userName, string email) { - string normalizedUserName = userName.ToUpperInvariant(); + string normalizedUserName = userName.ToLower(); if (_contentManager.Query() .Where(user => user.NormalizedUserName == normalizedUserName || user.Email == email) - .List() - .Any(user => - user.UserName.Equals(userName, StringComparison.OrdinalIgnoreCase) || - user.Email == email)) { + .List().Any()) { return false; } @@ -54,17 +51,13 @@ namespace Orchard.Users.Services { } public bool VerifyUserUnicity(int id, string userName, string email) { - string normalizedUserName = userName.ToUpperInvariant(); + string normalizedUserName = userName.ToLower(); if (_contentManager.Query() .Where(user => user.NormalizedUserName == normalizedUserName || user.Email == email) - .List() - .Any(user => - (user.UserName.Equals(userName, StringComparison.OrdinalIgnoreCase) || - user.Email == email) && - user.Id != id)) { + .List().Any(user => user.Id != id)) { return false; }