diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo.Abp.Identity.Domain.csproj b/modules/identity/src/Volo.Abp.Identity.Domain/Volo.Abp.Identity.Domain.csproj
index 4e0e27f17c..fa22210db0 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo.Abp.Identity.Domain.csproj
+++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo.Abp.Identity.Domain.csproj
@@ -33,8 +33,4 @@
-
-
-
-
diff --git a/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreIdentityUserRepository.cs b/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreIdentityUserRepository.cs
index aeb41a57dd..5ddf1213df 100644
--- a/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreIdentityUserRepository.cs
+++ b/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreIdentityUserRepository.cs
@@ -6,6 +6,7 @@ using System.Security.Claims;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Internal;
using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
@@ -19,7 +20,7 @@ namespace Volo.Abp.Identity.EntityFrameworkCore
}
public virtual async Task FindByNormalizedUserNameAsync(
- string normalizedUserName,
+ string normalizedUserName,
bool includeDetails = true,
CancellationToken cancellationToken = default)
{
@@ -32,7 +33,7 @@ namespace Volo.Abp.Identity.EntityFrameworkCore
}
public virtual async Task> GetRoleNamesAsync(
- Guid id,
+ Guid id,
CancellationToken cancellationToken = default)
{
var query = from userRole in DbContext.Set()
@@ -57,8 +58,8 @@ namespace Volo.Abp.Identity.EntityFrameworkCore
}
public virtual async Task FindByLoginAsync(
- string loginProvider,
- string providerKey,
+ string loginProvider,
+ string providerKey,
bool includeDetails = true,
CancellationToken cancellationToken = default)
{
@@ -90,7 +91,7 @@ namespace Volo.Abp.Identity.EntityFrameworkCore
}
public virtual async Task> GetListByNormalizedRoleNameAsync(
- string normalizedRoleName,
+ string normalizedRoleName,
bool includeDetails = false,
CancellationToken cancellationToken = default)
{
@@ -110,10 +111,10 @@ namespace Volo.Abp.Identity.EntityFrameworkCore
}
public virtual async Task> GetListAsync(
- string sorting = null,
+ string sorting = null,
int maxResultCount = int.MaxValue,
- int skipCount = 0,
- string filter = null,
+ int skipCount = 0,
+ string filter = null,
bool includeDetails = false,
CancellationToken cancellationToken = default)
{
@@ -138,22 +139,27 @@ namespace Volo.Abp.Identity.EntityFrameworkCore
var query = from userRole in DbContext.Set()
join role in DbContext.Roles.IncludeDetails(includeDetails) on userRole.RoleId equals role.Id
where userRole.UserId == id
- select role;
- //TODO
- //var q2 = from userOrganization in DbContext.Set()
- // join userOrg in DbContext.OrganizationUnits.IncludeDetails(includeDetails) on userOrganization.UserId equals id
- // select userOrg.Roles;
- //var q3 = from ouRole in DbContext.Set()
- // join role in DbContext.Roles.IncludeDetails(includeDetails) on ouRole.RoleId equals role.Id
- // where ouRole.RoleId == id
- // select role;
- //query = q2.Union(query);
-
- return await query.ToListAsync(GetCancellationToken(cancellationToken));
+ select role;
+
+ //TODO: Needs improvement
+ var userOrganizationsQuery = from userOrg in DbContext.Set()
+ join ou in DbContext.OrganizationUnits.IncludeDetails(includeDetails) on userOrg.OrganizationUnitId equals ou.Id
+ where userOrg.UserId == id
+ select ou;
+
+ var orgUserRoleQuery = DbContext.Set().Where(q => userOrganizationsQuery.Select(t => t.Id).Contains(q.OrganizationUnitId))
+ .Select(t => t.RoleId);
+
+ var orgRoles = DbContext.Roles.Where(q => orgUserRoleQuery.Contains(q.Id));
+ var resultQuery = query.Union(orgRoles);
+
+ return await resultQuery.ToListAsync(GetCancellationToken(cancellationToken));
+
+ //return await query.ToListAsync(GetCancellationToken(cancellationToken));
}
public virtual async Task GetCountAsync(
- string filter = null,
+ string filter = null,
CancellationToken cancellationToken = default)
{
return await this.WhereIf(