diff --git a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Assets/Visitors/FindExtensions.cs b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Assets/Visitors/FindExtensions.cs index 5c9a83ae9..80b2cedab 100644 --- a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Assets/Visitors/FindExtensions.cs +++ b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Assets/Visitors/FindExtensions.cs @@ -46,7 +46,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Assets.Visitors if (parentId.HasValue) { - if (parentId == DomainId.Empty) + if (parentId.Value == DomainId.Empty) { filters.Add( Filter.Or( diff --git a/backend/src/Squidex.Domain.Users.MongoDb/MongoUser.cs b/backend/src/Squidex.Domain.Users.MongoDb/MongoUser.cs index 3e56eabab..7e722a156 100644 --- a/backend/src/Squidex.Domain.Users.MongoDb/MongoUser.cs +++ b/backend/src/Squidex.Domain.Users.MongoDb/MongoUser.cs @@ -32,24 +32,19 @@ namespace Squidex.Domain.Users.MongoDb [BsonElement] public HashSet Roles { get; set; } = new HashSet(); - internal void AddLogin(UserLoginInfo login) + internal string? GetToken(string provider, string name) { - Logins.Add(login); + return Tokens.Find(x => x.LoginProvider == provider && x.Name == name)?.Value; } - internal void AddRole(string role) + internal void AddLogin(UserLoginInfo login) { - Roles.Add(role); + Logins.Add(new UserLoginInfo(login.LoginProvider, login.ProviderKey, login.ProviderDisplayName)); } - internal void RemoveRole(string role) - { - Roles.Remove(role); - } - - internal void RemoveLogin(string provider, string providerKey) + internal void AddRole(string role) { - Logins.RemoveAll(x => x.LoginProvider == provider && x.ProviderKey == providerKey); + Roles.Add(role); } internal void AddClaim(Claim claim) @@ -62,24 +57,29 @@ namespace Squidex.Domain.Users.MongoDb claims.Foreach((x, _) => AddClaim(x)); } - internal void RemoveClaim(Claim claim) + internal void AddToken(string provider, string name, string value) { - Claims.RemoveAll(x => x.Type == claim.Type && x.Value == claim.Value); + Tokens.Add(new UserTokenInfo { LoginProvider = provider, Name = name, Value = value }); } - internal void RemoveClaims(IEnumerable claims) + internal void RemoveLogin(string provider, string providerKey) { - claims.Foreach((x, _) => RemoveClaim(x)); + Logins.RemoveAll(x => x.LoginProvider == provider && x.ProviderKey == providerKey); } - internal string? GetToken(string provider, string name) + internal void RemoveRole(string role) { - return Tokens.FirstOrDefault(x => x.LoginProvider == provider && x.Name == name)?.Value; + Roles.Remove(role); } - internal void AddToken(string provider, string name, string value) + internal void RemoveClaim(Claim claim) { - Tokens.Add(new UserTokenInfo { LoginProvider = provider, Name = name, Value = value }); + Claims.RemoveAll(x => x.Type == claim.Type && x.Value == claim.Value); + } + + internal void RemoveClaims(IEnumerable claims) + { + claims.Foreach((x, _) => RemoveClaim(x)); } internal void RemoveToken(string provider, string name) @@ -94,11 +94,11 @@ namespace Squidex.Domain.Users.MongoDb AddClaim(newClaim); } - internal void SetToken(string loginProider, string name, string value) + internal void ReplaceToken(string provider, string name, string value) { - RemoveToken(loginProider, name); + RemoveToken(provider, name); - AddToken(loginProider, name, value); + AddToken(provider, name, value); } } diff --git a/backend/src/Squidex.Domain.Users.MongoDb/MongoUserStore.cs b/backend/src/Squidex.Domain.Users.MongoDb/MongoUserStore.cs index 85b5c8803..fc7bb3930 100644 --- a/backend/src/Squidex.Domain.Users.MongoDb/MongoUserStore.cs +++ b/backend/src/Squidex.Domain.Users.MongoDb/MongoUserStore.cs @@ -552,7 +552,7 @@ namespace Squidex.Domain.Users.MongoDb public Task SetTokenAsync(IdentityUser user, string loginProvider, string name, string value, CancellationToken cancellationToken) { - ((MongoUser)user).SetToken(loginProvider, name, value); + ((MongoUser)user).ReplaceToken(loginProvider, name, value); return Task.CompletedTask; } @@ -566,14 +566,14 @@ namespace Squidex.Domain.Users.MongoDb public Task SetAuthenticatorKeyAsync(IdentityUser user, string key, CancellationToken cancellationToken) { - ((MongoUser)user).SetToken(InternalLoginProvider, AuthenticatorKeyTokenName, key); + ((MongoUser)user).ReplaceToken(InternalLoginProvider, AuthenticatorKeyTokenName, key); return Task.CompletedTask; } public Task ReplaceCodesAsync(IdentityUser user, IEnumerable recoveryCodes, CancellationToken cancellationToken) { - ((MongoUser)user).SetToken(InternalLoginProvider, RecoveryCodeTokenName, string.Join(";", recoveryCodes)); + ((MongoUser)user).ReplaceToken(InternalLoginProvider, RecoveryCodeTokenName, string.Join(";", recoveryCodes)); return Task.CompletedTask; } @@ -587,7 +587,7 @@ namespace Squidex.Domain.Users.MongoDb { var updatedCodes = new List(splitCodes.Where(s => s != code)); - ((MongoUser)user).SetToken(InternalLoginProvider, RecoveryCodeTokenName, string.Join(";", updatedCodes)); + ((MongoUser)user).ReplaceToken(InternalLoginProvider, RecoveryCodeTokenName, string.Join(";", updatedCodes)); return Task.FromResult(true); } diff --git a/backend/src/Squidex/Areas/Api/Controllers/Assets/AssetsController.cs b/backend/src/Squidex/Areas/Api/Controllers/Assets/AssetsController.cs index 1450b69bd..4de224d11 100644 --- a/backend/src/Squidex/Areas/Api/Controllers/Assets/AssetsController.cs +++ b/backend/src/Squidex/Areas/Api/Controllers/Assets/AssetsController.cs @@ -95,9 +95,9 @@ namespace Squidex.Areas.Api.Controllers.Assets [ProducesResponseType(typeof(AssetsDto), 200)] [ApiPermissionOrAnonymous(Permissions.AppAssetsRead)] [ApiCosts(1)] - public async Task GetAssets(string app, [FromQuery] string? parentId, [FromQuery] string? ids = null, [FromQuery] string? q = null) + public async Task GetAssets(string app, [FromQuery] DomainId? parentId, [FromQuery] string? ids = null, [FromQuery] string? q = null) { - var assets = await assetQuery.QueryAsync(Context, DomainId.CreateNullable(parentId), CreateQuery(ids, q)); + var assets = await assetQuery.QueryAsync(Context, parentId, CreateQuery(ids, q)); var response = Deferred.Response(() => { diff --git a/backend/tools/TestSuite/TestSuite.ApiTests/AppTests.cs b/backend/tools/TestSuite/TestSuite.ApiTests/AppTests.cs index c281db978..ec215d2ac 100644 --- a/backend/tools/TestSuite/TestSuite.ApiTests/AppTests.cs +++ b/backend/tools/TestSuite/TestSuite.ApiTests/AppTests.cs @@ -7,7 +7,6 @@ using System; using System.Collections.Generic; -using System.Diagnostics; using System.IO; using System.Linq; using System.Threading.Tasks; @@ -32,25 +31,10 @@ namespace TestSuite.ApiTests [Fact] public async Task Should_get_app() { - var w = Stopwatch.StartNew(); - + // STEP 1: Get app. var app = await _.Apps.GetAppAsync(_.AppName); Assert.Equal(_.AppName, app.Name); - - w.Stop(); - - Debug.WriteLine("ELAPSED: {0}", w.Elapsed); - - var w2 = Stopwatch.StartNew(); - - app = await _.Apps.GetAppAsync(_.AppName); - - Assert.Equal(_.AppName, app.Name); - - w2.Stop(); - - Debug.WriteLine("ELAPSED: {0}", w2.Elapsed); } [Fact] diff --git a/backend/tools/TestSuite/TestSuite.Shared/TestSuite.Shared.csproj b/backend/tools/TestSuite/TestSuite.Shared/TestSuite.Shared.csproj index d6e81aa23..f8cb2eb62 100644 --- a/backend/tools/TestSuite/TestSuite.Shared/TestSuite.Shared.csproj +++ b/backend/tools/TestSuite/TestSuite.Shared/TestSuite.Shared.csproj @@ -11,7 +11,7 @@ - +