Browse Source

Fix parent id for assets.

pull/593/head
Sebastian 5 years ago
parent
commit
60c8c0a165
  1. 2
      backend/src/Squidex.Domain.Apps.Entities.MongoDb/Assets/Visitors/FindExtensions.cs
  2. 44
      backend/src/Squidex.Domain.Users.MongoDb/MongoUser.cs
  3. 8
      backend/src/Squidex.Domain.Users.MongoDb/MongoUserStore.cs
  4. 4
      backend/src/Squidex/Areas/Api/Controllers/Assets/AssetsController.cs
  5. 18
      backend/tools/TestSuite/TestSuite.ApiTests/AppTests.cs
  6. 2
      backend/tools/TestSuite/TestSuite.Shared/TestSuite.Shared.csproj

2
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.HasValue)
{ {
if (parentId == DomainId.Empty) if (parentId.Value == DomainId.Empty)
{ {
filters.Add( filters.Add(
Filter.Or( Filter.Or(

44
backend/src/Squidex.Domain.Users.MongoDb/MongoUser.cs

@ -32,24 +32,19 @@ namespace Squidex.Domain.Users.MongoDb
[BsonElement] [BsonElement]
public HashSet<string> Roles { get; set; } = new HashSet<string>(); public HashSet<string> Roles { get; set; } = new HashSet<string>();
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) internal void AddRole(string role)
{
Roles.Remove(role);
}
internal void RemoveLogin(string provider, string providerKey)
{ {
Logins.RemoveAll(x => x.LoginProvider == provider && x.ProviderKey == providerKey); Roles.Add(role);
} }
internal void AddClaim(Claim claim) internal void AddClaim(Claim claim)
@ -62,24 +57,29 @@ namespace Squidex.Domain.Users.MongoDb
claims.Foreach((x, _) => AddClaim(x)); 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<Claim> 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<Claim> claims)
{
claims.Foreach((x, _) => RemoveClaim(x));
} }
internal void RemoveToken(string provider, string name) internal void RemoveToken(string provider, string name)
@ -94,11 +94,11 @@ namespace Squidex.Domain.Users.MongoDb
AddClaim(newClaim); 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);
} }
} }

8
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) 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; return Task.CompletedTask;
} }
@ -566,14 +566,14 @@ namespace Squidex.Domain.Users.MongoDb
public Task SetAuthenticatorKeyAsync(IdentityUser user, string key, CancellationToken cancellationToken) public Task SetAuthenticatorKeyAsync(IdentityUser user, string key, CancellationToken cancellationToken)
{ {
((MongoUser)user).SetToken(InternalLoginProvider, AuthenticatorKeyTokenName, key); ((MongoUser)user).ReplaceToken(InternalLoginProvider, AuthenticatorKeyTokenName, key);
return Task.CompletedTask; return Task.CompletedTask;
} }
public Task ReplaceCodesAsync(IdentityUser user, IEnumerable<string> recoveryCodes, CancellationToken cancellationToken) public Task ReplaceCodesAsync(IdentityUser user, IEnumerable<string> recoveryCodes, CancellationToken cancellationToken)
{ {
((MongoUser)user).SetToken(InternalLoginProvider, RecoveryCodeTokenName, string.Join(";", recoveryCodes)); ((MongoUser)user).ReplaceToken(InternalLoginProvider, RecoveryCodeTokenName, string.Join(";", recoveryCodes));
return Task.CompletedTask; return Task.CompletedTask;
} }
@ -587,7 +587,7 @@ namespace Squidex.Domain.Users.MongoDb
{ {
var updatedCodes = new List<string>(splitCodes.Where(s => s != code)); var updatedCodes = new List<string>(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); return Task.FromResult(true);
} }

4
backend/src/Squidex/Areas/Api/Controllers/Assets/AssetsController.cs

@ -95,9 +95,9 @@ namespace Squidex.Areas.Api.Controllers.Assets
[ProducesResponseType(typeof(AssetsDto), 200)] [ProducesResponseType(typeof(AssetsDto), 200)]
[ApiPermissionOrAnonymous(Permissions.AppAssetsRead)] [ApiPermissionOrAnonymous(Permissions.AppAssetsRead)]
[ApiCosts(1)] [ApiCosts(1)]
public async Task<IActionResult> GetAssets(string app, [FromQuery] string? parentId, [FromQuery] string? ids = null, [FromQuery] string? q = null) public async Task<IActionResult> 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(() => var response = Deferred.Response(() =>
{ {

18
backend/tools/TestSuite/TestSuite.ApiTests/AppTests.cs

@ -7,7 +7,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -32,25 +31,10 @@ namespace TestSuite.ApiTests
[Fact] [Fact]
public async Task Should_get_app() public async Task Should_get_app()
{ {
var w = Stopwatch.StartNew(); // STEP 1: Get app.
var app = await _.Apps.GetAppAsync(_.AppName); var app = await _.Apps.GetAppAsync(_.AppName);
Assert.Equal(_.AppName, app.Name); 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] [Fact]

2
backend/tools/TestSuite/TestSuite.Shared/TestSuite.Shared.csproj

@ -11,7 +11,7 @@
</PackageReference> </PackageReference>
<PackageReference Include="Lazy.Fody" Version="1.8.0" PrivateAssets="all" /> <PackageReference Include="Lazy.Fody" Version="1.8.0" PrivateAssets="all" />
<PackageReference Include="RefactoringEssentials" Version="5.6.0" PrivateAssets="all" /> <PackageReference Include="RefactoringEssentials" Version="5.6.0" PrivateAssets="all" />
<PackageReference Include="Squidex.ClientLibrary" Version="6.0.0-beta1" /> <PackageReference Include="Squidex.ClientLibrary" Version="6.4.0" />
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="all" /> <PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="all" />
<PackageReference Include="xunit" Version="2.4.1" /> <PackageReference Include="xunit" Version="2.4.1" />
</ItemGroup> </ItemGroup>

Loading…
Cancel
Save