|
|
@ -164,6 +164,7 @@ public class MongoIdentityUserRepository : MongoDbRepository<IAbpIdentityMongoDb |
|
|
bool includeDetails = false, |
|
|
bool includeDetails = false, |
|
|
Guid? roleId = null, |
|
|
Guid? roleId = null, |
|
|
Guid? organizationUnitId = null, |
|
|
Guid? organizationUnitId = null, |
|
|
|
|
|
string id = null, |
|
|
string userName = null, |
|
|
string userName = null, |
|
|
string phoneNumber = null, |
|
|
string phoneNumber = null, |
|
|
string emailAddress = null, |
|
|
string emailAddress = null, |
|
|
@ -183,6 +184,7 @@ public class MongoIdentityUserRepository : MongoDbRepository<IAbpIdentityMongoDb |
|
|
filter, |
|
|
filter, |
|
|
roleId, |
|
|
roleId, |
|
|
organizationUnitId, |
|
|
organizationUnitId, |
|
|
|
|
|
id, |
|
|
userName, |
|
|
userName, |
|
|
phoneNumber, |
|
|
phoneNumber, |
|
|
emailAddress, |
|
|
emailAddress, |
|
|
@ -244,6 +246,7 @@ public class MongoIdentityUserRepository : MongoDbRepository<IAbpIdentityMongoDb |
|
|
string filter = null, |
|
|
string filter = null, |
|
|
Guid? roleId = null, |
|
|
Guid? roleId = null, |
|
|
Guid? organizationUnitId = null, |
|
|
Guid? organizationUnitId = null, |
|
|
|
|
|
string id = null, |
|
|
string userName = null, |
|
|
string userName = null, |
|
|
string phoneNumber = null, |
|
|
string phoneNumber = null, |
|
|
string emailAddress = null, |
|
|
string emailAddress = null, |
|
|
@ -263,6 +266,7 @@ public class MongoIdentityUserRepository : MongoDbRepository<IAbpIdentityMongoDb |
|
|
filter, |
|
|
filter, |
|
|
roleId, |
|
|
roleId, |
|
|
organizationUnitId, |
|
|
organizationUnitId, |
|
|
|
|
|
id, |
|
|
userName, |
|
|
userName, |
|
|
phoneNumber, |
|
|
phoneNumber, |
|
|
emailAddress, |
|
|
emailAddress, |
|
|
@ -391,15 +395,14 @@ public class MongoIdentityUserRepository : MongoDbRepository<IAbpIdentityMongoDb |
|
|
var roleIds = userAndRoleIds.SelectMany(x => x.Value); |
|
|
var roleIds = userAndRoleIds.SelectMany(x => x.Value); |
|
|
|
|
|
|
|
|
var organizationUnitAndRoleIds = await (await GetMongoQueryableAsync<OrganizationUnit>(cancellationToken)).Where(ou => organizationUnitIds.Contains(ou.Id)) |
|
|
var organizationUnitAndRoleIds = await (await GetMongoQueryableAsync<OrganizationUnit>(cancellationToken)).Where(ou => organizationUnitIds.Contains(ou.Id)) |
|
|
.Select(userOrganizationUnit => new |
|
|
.Select(userOrganizationUnit => new { |
|
|
{ |
|
|
|
|
|
userOrganizationUnit.Id, |
|
|
userOrganizationUnit.Id, |
|
|
userOrganizationUnit.Roles |
|
|
userOrganizationUnit.Roles |
|
|
}).ToListAsync(cancellationToken: cancellationToken); |
|
|
}).ToListAsync(cancellationToken: cancellationToken); |
|
|
var allOrganizationUnitRoleIds = organizationUnitAndRoleIds.SelectMany(x => x.Roles.Select(r => r.RoleId)).ToList(); |
|
|
var allOrganizationUnitRoleIds = organizationUnitAndRoleIds.SelectMany(x => x.Roles.Select(r => r.RoleId)).ToList(); |
|
|
var allRoleIds = roleIds.Union(allOrganizationUnitRoleIds); |
|
|
var allRoleIds = roleIds.Union(allOrganizationUnitRoleIds); |
|
|
|
|
|
|
|
|
var roles = await (await GetMongoQueryableAsync<IdentityRole>(cancellationToken)).Where(r => allRoleIds.Contains(r.Id)).Select(r => new{ r.Id, r.Name }).ToListAsync(cancellationToken); |
|
|
var roles = await (await GetMongoQueryableAsync<IdentityRole>(cancellationToken)).Where(r => allRoleIds.Contains(r.Id)).Select(r => new { r.Id, r.Name }).ToListAsync(cancellationToken); |
|
|
var userRoles = userAndRoleIds.ToDictionary(x => x.Key, x => roles.Where(r => x.Value.Contains(r.Id)).Select(r => r.Name).ToArray()); |
|
|
var userRoles = userAndRoleIds.ToDictionary(x => x.Key, x => roles.Where(r => x.Value.Contains(r.Id)).Select(r => r.Name).ToArray()); |
|
|
|
|
|
|
|
|
var result = userRoles.Select(x => new IdentityUserIdWithRoleNames { Id = x.Key, RoleNames = x.Value }).ToList(); |
|
|
var result = userRoles.Select(x => new IdentityUserIdWithRoleNames { Id = x.Key, RoleNames = x.Value }).ToList(); |
|
|
@ -413,9 +416,9 @@ public class MongoIdentityUserRepository : MongoDbRepository<IAbpIdentityMongoDb |
|
|
{ |
|
|
{ |
|
|
user.RoleNames = user.RoleNames.Union(roleNames).ToArray(); |
|
|
user.RoleNames = user.RoleNames.Union(roleNames).ToArray(); |
|
|
} |
|
|
} |
|
|
else if(roleNames.Any()) |
|
|
else if (roleNames.Any()) |
|
|
{ |
|
|
{ |
|
|
result.Add(new IdentityUserIdWithRoleNames { Id = userAndOrganizationUnitId.Key, RoleNames = roleNames}); |
|
|
result.Add(new IdentityUserIdWithRoleNames { Id = userAndOrganizationUnitId.Key, RoleNames = roleNames }); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -426,6 +429,7 @@ public class MongoIdentityUserRepository : MongoDbRepository<IAbpIdentityMongoDb |
|
|
string filter = null, |
|
|
string filter = null, |
|
|
Guid? roleId = null, |
|
|
Guid? roleId = null, |
|
|
Guid? organizationUnitId = null, |
|
|
Guid? organizationUnitId = null, |
|
|
|
|
|
string id = null, |
|
|
string userName = null, |
|
|
string userName = null, |
|
|
string phoneNumber = null, |
|
|
string phoneNumber = null, |
|
|
string emailAddress = null, |
|
|
string emailAddress = null, |
|
|
@ -454,7 +458,7 @@ public class MongoIdentityUserRepository : MongoDbRepository<IAbpIdentityMongoDb |
|
|
query = query.Where(identityUser => identityUser.Roles.Any(x => x.RoleId == roleId.Value) || identityUser.OrganizationUnits.Any(x => organizationUnitIds.Contains(x.OrganizationUnitId))); |
|
|
query = query.Where(identityUser => identityUser.Roles.Any(x => x.RoleId == roleId.Value) || identityUser.OrganizationUnits.Any(x => organizationUnitIds.Contains(x.OrganizationUnitId))); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
return query |
|
|
return query |
|
|
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>( |
|
|
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>( |
|
|
!filter.IsNullOrWhiteSpace(), |
|
|
!filter.IsNullOrWhiteSpace(), |
|
|
u => |
|
|
u => |
|
|
@ -471,13 +475,14 @@ public class MongoIdentityUserRepository : MongoDbRepository<IAbpIdentityMongoDb |
|
|
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(!string.IsNullOrWhiteSpace(name), x => x.Name == name) |
|
|
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(!string.IsNullOrWhiteSpace(name), x => x.Name == name) |
|
|
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(!string.IsNullOrWhiteSpace(surname), x => x.Surname == surname) |
|
|
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(!string.IsNullOrWhiteSpace(surname), x => x.Surname == surname) |
|
|
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(isLockedOut.HasValue && isLockedOut.Value, x => x.LockoutEnabled && x.LockoutEnd != null && x.LockoutEnd > DateTimeOffset.UtcNow) |
|
|
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(isLockedOut.HasValue && isLockedOut.Value, x => x.LockoutEnabled && x.LockoutEnd != null && x.LockoutEnd > DateTimeOffset.UtcNow) |
|
|
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(isLockedOut.HasValue && !isLockedOut.Value, x => !(x.LockoutEnabled && x.LockoutEnd != null && x.LockoutEnd > DateTimeOffset.UtcNow)) |
|
|
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(isLockedOut.HasValue && !isLockedOut.Value, x => !(x.LockoutEnabled && x.LockoutEnd != null && x.LockoutEnd > DateTimeOffset.UtcNow)) |
|
|
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(notActive.HasValue, x => x.IsActive == !notActive.Value) |
|
|
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(notActive.HasValue, x => x.IsActive == !notActive.Value) |
|
|
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(emailConfirmed.HasValue, x => x.EmailConfirmed == emailConfirmed.Value) |
|
|
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(emailConfirmed.HasValue, x => x.EmailConfirmed == emailConfirmed.Value) |
|
|
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(isExternal.HasValue, x => x.IsExternal == isExternal.Value) |
|
|
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(isExternal.HasValue, x => x.IsExternal == isExternal.Value) |
|
|
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(maxCreationTime != null, p => p.CreationTime <= maxCreationTime) |
|
|
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(maxCreationTime != null, p => p.CreationTime <= maxCreationTime) |
|
|
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(minCreationTime != null, p => p.CreationTime >= minCreationTime) |
|
|
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(minCreationTime != null, p => p.CreationTime >= minCreationTime) |
|
|
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(maxModifitionTime != null, p => p.LastModificationTime <= maxModifitionTime) |
|
|
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(maxModifitionTime != null, p => p.LastModificationTime <= maxModifitionTime) |
|
|
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(minModifitionTime != null, p => p.LastModificationTime >= minModifitionTime); |
|
|
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(minModifitionTime != null, p => p.LastModificationTime >= minModifitionTime) |
|
|
|
|
|
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(!string.IsNullOrWhiteSpace(id), x => x.Id.ToString() == id); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|