Browse Source

Fix user resolve to ignore invalid ids.

pull/444/head
Sebastian 6 years ago
parent
commit
103bae000a
  1. 11
      backend/src/Squidex.Domain.Users/DefaultUserResolver.cs

11
backend/src/Squidex.Domain.Users/DefaultUserResolver.cs

@ -29,6 +29,8 @@ namespace Squidex.Domain.Users
public async Task<bool> CreateUserIfNotExists(string email, bool invited) public async Task<bool> CreateUserIfNotExists(string email, bool invited)
{ {
Guard.NotNullOrEmpty(email);
using (var scope = serviceProvider.CreateScope()) using (var scope = serviceProvider.CreateScope())
{ {
var userFactory = scope.ServiceProvider.GetRequiredService<IUserFactory>(); var userFactory = scope.ServiceProvider.GetRequiredService<IUserFactory>();
@ -58,6 +60,8 @@ namespace Squidex.Domain.Users
public async Task<IUser?> FindByIdOrEmailAsync(string idOrEmail) public async Task<IUser?> FindByIdOrEmailAsync(string idOrEmail)
{ {
Guard.NotNullOrEmpty(idOrEmail);
using (var scope = serviceProvider.CreateScope()) using (var scope = serviceProvider.CreateScope())
{ {
var userFactory = scope.ServiceProvider.GetRequiredService<IUserFactory>(); var userFactory = scope.ServiceProvider.GetRequiredService<IUserFactory>();
@ -76,6 +80,8 @@ namespace Squidex.Domain.Users
public async Task<List<IUser>> QueryByEmailAsync(string email) public async Task<List<IUser>> QueryByEmailAsync(string email)
{ {
Guard.NotNullOrEmpty(email);
using (var scope = serviceProvider.CreateScope()) using (var scope = serviceProvider.CreateScope())
{ {
var userManager = scope.ServiceProvider.GetRequiredService<UserManager<IdentityUser>>(); var userManager = scope.ServiceProvider.GetRequiredService<UserManager<IdentityUser>>();
@ -88,9 +94,14 @@ namespace Squidex.Domain.Users
public async Task<Dictionary<string, IUser>> QueryManyAsync(string[] ids) public async Task<Dictionary<string, IUser>> QueryManyAsync(string[] ids)
{ {
Guard.NotNull(ids);
using (var scope = serviceProvider.CreateScope()) using (var scope = serviceProvider.CreateScope())
{ {
var userManager = scope.ServiceProvider.GetRequiredService<UserManager<IdentityUser>>(); var userManager = scope.ServiceProvider.GetRequiredService<UserManager<IdentityUser>>();
var userFactory = scope.ServiceProvider.GetRequiredService<IUserFactory>();
ids = ids.Where(x => userFactory.IsId(x)).ToArray();
var result = await userManager.QueryByIdsAync(ids); var result = await userManager.QueryByIdsAync(ids);

Loading…
Cancel
Save