Fixes issue with @ symbols in login name and a member group query
This commit is contained in:
@@ -201,12 +201,13 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
//find the member by username
|
||||
var memberSql = new Sql();
|
||||
var memberObjectType = new Guid(Constants.ObjectTypes.Member);
|
||||
var escapedUsername = PetaPocoExtensions.EscapeAtSymbols(username);
|
||||
memberSql.Select("umbracoNode.id")
|
||||
.From<NodeDto>()
|
||||
.InnerJoin<MemberDto>()
|
||||
.On<NodeDto, MemberDto>(dto => dto.NodeId, dto => dto.NodeId)
|
||||
.Where<NodeDto>(x => x.NodeObjectType == memberObjectType)
|
||||
.Where<MemberDto>(x => x.LoginName == username);
|
||||
.Where<MemberDto>(x => x.LoginName == escapedUsername);
|
||||
var memberIdUsername = Database.Fetch<int?>(memberSql).FirstOrDefault();
|
||||
if (memberIdUsername.HasValue == false)
|
||||
{
|
||||
|
||||
@@ -205,6 +205,25 @@ namespace Umbraco.Tests.Services
|
||||
Assert.AreEqual(2, membersInRole.Count());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Associate_Members_To_Roles_With_Member_Username_Containing_At_Symbols()
|
||||
{
|
||||
ServiceContext.MemberService.AddRole("MyTestRole1");
|
||||
|
||||
IMemberType memberType = MockedContentTypes.CreateSimpleMemberType();
|
||||
ServiceContext.MemberTypeService.Save(memberType);
|
||||
var member1 = MockedMember.CreateSimpleMember(memberType, "test1", "test1@test.com", "pass", "test1@test.com");
|
||||
ServiceContext.MemberService.Save(member1);
|
||||
var member2 = MockedMember.CreateSimpleMember(memberType, "test2", "test2@test.com", "pass", "test2@test.com");
|
||||
ServiceContext.MemberService.Save(member2);
|
||||
|
||||
ServiceContext.MemberService.AssignRoles(new[] { member1.Username, member2.Username }, new[] { "MyTestRole1" });
|
||||
|
||||
var membersInRole = ServiceContext.MemberService.GetMembersInRole("MyTestRole1");
|
||||
|
||||
Assert.AreEqual(2, membersInRole.Count());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Associate_Members_To_Roles_With_New_Role()
|
||||
{
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
using System.Collections.Specialized;
|
||||
using System.Configuration.Provider;
|
||||
using System.Linq;
|
||||
using System.Web.Security;
|
||||
using Umbraco.Core;
|
||||
@@ -22,7 +24,7 @@ namespace Umbraco.Web.Security.Providers
|
||||
}
|
||||
|
||||
private string _applicationName;
|
||||
|
||||
|
||||
public override bool IsUserInRole(string username, string roleName)
|
||||
{
|
||||
return GetRolesForUser(username).Any(x => x == roleName);
|
||||
@@ -73,10 +75,27 @@ namespace Umbraco.Web.Security.Providers
|
||||
return _roleService.FindMembersInRole(roleName, usernameToMatch, StringPropertyMatchType.Wildcard).Select(x => x.Username).ToArray();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The name of the application using the custom role provider.
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
/// <returns>The name of the application using the custom membership provider.</returns>
|
||||
public override string ApplicationName
|
||||
{
|
||||
get { return _applicationName; }
|
||||
set { _applicationName = value; }
|
||||
get
|
||||
{
|
||||
return _applicationName;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (string.IsNullOrEmpty(value))
|
||||
throw new ProviderException("ApplicationName cannot be empty.");
|
||||
|
||||
if (value.Length > 0x100)
|
||||
throw new ProviderException("Provider application name too long.");
|
||||
|
||||
_applicationName = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user