Browse Source

Add IdentityUserIdWithRoleNames

pull/17627/head
liangshiwei 3 years ago
parent
commit
f22e1c220c
  1. 2
      modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IIdentityUserRepository.cs
  2. 11
      modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserIdWithRoleNames.cs
  3. 6
      modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreIdentityUserRepository.cs
  4. 6
      modules/identity/src/Volo.Abp.Identity.MongoDB/Volo/Abp/Identity/MongoDB/MongoIdentityUserRepository.cs
  5. 24
      modules/identity/test/Volo.Abp.Identity.TestBase/Volo/Abp/Identity/IdentityUserRepository_Tests.cs

2
modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IIdentityUserRepository.cs

@ -144,7 +144,7 @@ public interface IIdentityUserRepository : IBasicRepository<IdentityUser, Guid>
CancellationToken cancellationToken = default
);
Task<Dictionary<Guid, List<string>>> GetRoleNamesAsync(
Task<List<IdentityUserIdWithRoleNames>> GetRoleNamesAsync(
IEnumerable<Guid> userIds,
CancellationToken cancellationToken = default);
}

11
modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserIdWithRoleNames.cs

@ -0,0 +1,11 @@
using System;
using System.Collections.Generic;
namespace Volo.Abp.Identity;
public class IdentityUserIdWithRoleNames
{
public Guid Id { get; set; }
public string[] RoleNames { get; set; }
}

6
modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreIdentityUserRepository.cs

@ -56,7 +56,7 @@ public class EfCoreIdentityUserRepository : EfCoreRepository<IIdentityDbContext,
return await resultQuery.ToListAsync(GetCancellationToken(cancellationToken));
}
public virtual async Task<Dictionary<Guid, List<string>>> GetRoleNamesAsync(
public virtual async Task<List<IdentityUserIdWithRoleNames>> GetRoleNamesAsync(
IEnumerable<Guid> userIds,
CancellationToken cancellationToken = default)
{
@ -72,9 +72,9 @@ public class EfCoreIdentityUserRepository : EfCoreRepository<IIdentityDbContext,
var result = await query
.GroupBy(x => x.UserId)
.ToDictionaryAsync(x => x.Key, x => x.Select(r => r.Name).ToList(), cancellationToken: cancellationToken);
.ToDictionaryAsync(x => x.Key, x => x.Select(r => r.Name).ToArray(), cancellationToken: cancellationToken);
return result;
return result.Select(x => new IdentityUserIdWithRoleNames() { Id = x.Key, RoleNames = x.Value }).ToList();
}
public virtual async Task<List<string>> GetRoleNamesInOrganizationUnitAsync(

6
modules/identity/src/Volo.Abp.Identity.MongoDB/Volo/Abp/Identity/MongoDB/MongoIdentityUserRepository.cs

@ -361,7 +361,7 @@ public class MongoIdentityUserRepository : MongoDbRepository<IAbpIdentityMongoDb
await UpdateManyAsync(users, cancellationToken: cancellationToken);
}
public virtual async Task<Dictionary<Guid, List<string>>> GetRoleNamesAsync(
public virtual async Task<List<IdentityUserIdWithRoleNames>> GetRoleNamesAsync(
IEnumerable<Guid> userIds,
CancellationToken cancellationToken = default)
{
@ -383,6 +383,8 @@ public class MongoIdentityUserRepository : MongoDbRepository<IAbpIdentityMongoDb
r.Name
}).ToListAsync(cancellationToken);
return userAndRoleIds.ToDictionary(x => x.Key, x => roles.Where(r => x.Value.Contains(r.Id)).Select(r => r.Name).ToList());
var result = userAndRoleIds.ToDictionary(x => x.Key, x => roles.Where(r => x.Value.Contains(r.Id)).Select(r => r.Name).ToArray());
return result.Select(x => new IdentityUserIdWithRoleNames() { Id = x.Key, RoleNames = x.Value }).ToList();
}
}

24
modules/identity/test/Volo.Abp.Identity.TestBase/Volo/Abp/Identity/IdentityUserRepository_Tests.cs

@ -64,14 +64,22 @@ public abstract class IdentityUserRepository_Tests<TStartupModule> : AbpIdentity
TestData.UserDavidId
});
userRoleNames[TestData.UserBobId].Count.ShouldBe(1);
userRoleNames[TestData.UserBobId][0].ShouldBe("manager");
userRoleNames[TestData.UserJohnId].Count.ShouldBe(2);
userRoleNames[TestData.UserJohnId].ShouldContain("moderator");
userRoleNames[TestData.UserJohnId].ShouldContain("supporter");
userRoleNames[TestData.UserNeoId].Count.ShouldBe(1);
userRoleNames[TestData.UserNeoId][0].ShouldBe("supporter");
userRoleNames.ShouldNotContainKey(TestData.UserDavidId);
userRoleNames.Count.ShouldBe(3);
var userBob = userRoleNames.First(x => x.Id == TestData.UserBobId);
userBob.RoleNames.Length.ShouldBe(1);
userBob.RoleNames[0].ShouldBe("manager");
var userJohn = userRoleNames.First(x => x.Id == TestData.UserJohnId);
userJohn.RoleNames.Length.ShouldBe(2);
userJohn.RoleNames.ShouldContain("moderator");
userJohn.RoleNames.ShouldContain("supporter");
var userNeo = userRoleNames.First(x => x.Id == TestData.UserNeoId);
userNeo.RoleNames.Length.ShouldBe(1);
userNeo.RoleNames[0].ShouldBe("supporter");
userRoleNames.ShouldNotContain(x => x.Id == TestData.UserDavidId);
}
[Fact]

Loading…
Cancel
Save