Browse Source

Fix Orleans credentials and remove obsolete profilers.

pull/848/head
Sebastian 4 years ago
parent
commit
f81fe2e6b0
  1. 7
      backend/src/Squidex.Infrastructure.MongoDb/MongoDb/TypeConverterStringSerializer.cs
  2. 32
      backend/src/Squidex.Infrastructure/EventSourcing/EnvelopeExtensions.cs
  3. 4
      backend/src/Squidex.Infrastructure/EventSourcing/EnvelopeHeaders.cs
  4. 38
      backend/src/Squidex.Infrastructure/Json/Newtonsoft/EnvelopeHeadersConverter.cs
  5. 21
      backend/src/Squidex.Infrastructure/Json/Newtonsoft/TypeConverterJsonConverter.cs
  6. 3
      backend/src/Squidex/Areas/IdentityServer/Config/DynamicApplicationStore.cs
  7. 6
      backend/src/Squidex/Areas/IdentityServer/Config/IdentityServerServices.cs
  8. 3
      backend/src/Squidex/Config/Domain/SerializationServices.cs
  9. 3
      backend/tests/Squidex.Domain.Apps.Core.Tests/TestHelpers/TestUtils.cs
  10. 5
      backend/tests/Squidex.Domain.Apps.Entities.Tests/Backup/BackupReaderWriterTests.cs
  11. 25
      backend/tests/Squidex.Infrastructure.Tests/EventSourcing/EnvelopeHeadersTests.cs
  12. 3
      backend/tests/Squidex.Infrastructure.Tests/TestHelpers/TestUtils.cs
  13. 2
      frontend/src/app/features/content/pages/content/content-event.component.scss
  14. 2
      frontend/src/app/shared/components/assets/asset-history.component.scss
  15. 2
      frontend/src/app/shared/components/comments/comment.component.scss
  16. 2
      frontend/src/app/shared/components/history/history-list.component.scss

7
backend/src/Squidex.Infrastructure.MongoDb/MongoDb/TypeConverterStringSerializer.cs

@ -14,7 +14,7 @@ namespace Squidex.Infrastructure.MongoDb
{
public sealed class TypeConverterStringSerializer<T> : SerializerBase<T>
{
private readonly TypeConverter typeConverter;
private readonly TypeConverter typeConverter = TypeDescriptor.GetConverter(typeof(T));
public static void Register()
{
@ -28,11 +28,6 @@ namespace Squidex.Infrastructure.MongoDb
}
}
public TypeConverterStringSerializer()
{
typeConverter = TypeDescriptor.GetConverter(typeof(T));
}
public override T Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
{
if (context.Reader.CurrentBsonType == BsonType.Null)

32
backend/src/Squidex.Infrastructure/EventSourcing/EnvelopeExtensions.cs

@ -21,7 +21,7 @@ namespace Squidex.Infrastructure.EventSourcing
public static Envelope<T> SetEventPosition<T>(this Envelope<T> envelope, string value) where T : class, IEvent
{
envelope.Headers.Add(CommonHeaders.EventNumber, value);
envelope.Headers.Add(CommonHeaders.EventNumber, JsonValue.Create(value));
return envelope;
}
@ -33,7 +33,7 @@ namespace Squidex.Infrastructure.EventSourcing
public static Envelope<T> SetEventStreamNumber<T>(this Envelope<T> envelope, long value) where T : class, IEvent
{
envelope.Headers.Add(CommonHeaders.EventStreamNumber, value);
envelope.Headers.Add(CommonHeaders.EventStreamNumber, JsonValue.Create(value));
return envelope;
}
@ -45,7 +45,7 @@ namespace Squidex.Infrastructure.EventSourcing
public static Envelope<T> SetCommitId<T>(this Envelope<T> envelope, Guid value) where T : class, IEvent
{
envelope.Headers.Add(CommonHeaders.CommitId, value.ToString());
envelope.Headers.Add(CommonHeaders.CommitId, JsonValue.Create(value));
return envelope;
}
@ -57,7 +57,7 @@ namespace Squidex.Infrastructure.EventSourcing
public static Envelope<T> SetAggregateId<T>(this Envelope<T> envelope, DomainId value) where T : class, IEvent
{
envelope.Headers.Add(CommonHeaders.AggregateId, value.ToString());
envelope.Headers.Add(CommonHeaders.AggregateId, JsonValue.Create(value));
return envelope;
}
@ -69,7 +69,7 @@ namespace Squidex.Infrastructure.EventSourcing
public static Envelope<T> SetEventId<T>(this Envelope<T> envelope, Guid value) where T : class, IEvent
{
envelope.Headers.Add(CommonHeaders.EventId, value.ToString());
envelope.Headers.Add(CommonHeaders.EventId, JsonValue.Create(value));
return envelope;
}
@ -81,7 +81,7 @@ namespace Squidex.Infrastructure.EventSourcing
public static Envelope<T> SetTimestamp<T>(this Envelope<T> envelope, Instant value) where T : class, IEvent
{
envelope.Headers.Add(CommonHeaders.Timestamp, value.ToString());
envelope.Headers.Add(CommonHeaders.Timestamp, JsonValue.Create(value));
return envelope;
}
@ -93,12 +93,12 @@ namespace Squidex.Infrastructure.EventSourcing
public static Envelope<T> SetRestored<T>(this Envelope<T> envelope, bool value = true) where T : class, IEvent
{
envelope.Headers.Add(CommonHeaders.Restored, value);
envelope.Headers.Add(CommonHeaders.Restored, JsonValue.Create(value));
return envelope;
}
public static long GetLong(this JsonObject obj, string key)
public static long GetLong(this EnvelopeHeaders obj, string key)
{
if (obj.TryGetValue(key, out var v))
{
@ -115,9 +115,9 @@ namespace Squidex.Infrastructure.EventSourcing
return 0;
}
public static Guid GetGuid(this JsonObject obj, string key)
public static Guid GetGuid(this EnvelopeHeaders obj, string key)
{
if (obj.TryGetValue<JsonString>(key, out var v) && Guid.TryParse(v.ToString(), out var guid))
if (obj.TryGetValue(key, out var v) && v is JsonString s && Guid.TryParse(s.ToString(), out var guid))
{
return guid;
}
@ -125,9 +125,9 @@ namespace Squidex.Infrastructure.EventSourcing
return default;
}
public static Instant GetInstant(this JsonObject obj, string key)
public static Instant GetInstant(this EnvelopeHeaders obj, string key)
{
if (obj.TryGetValue<JsonString>(key, out var v) && InstantPattern.ExtendedIso.Parse(v.ToString()).TryGetValue(default, out var instant))
if (obj.TryGetValue(key, out var v) && v is JsonString s && InstantPattern.ExtendedIso.Parse(s.ToString()).TryGetValue(default, out var instant))
{
return instant;
}
@ -135,7 +135,7 @@ namespace Squidex.Infrastructure.EventSourcing
return default;
}
public static string GetString(this JsonObject obj, string key)
public static string GetString(this EnvelopeHeaders obj, string key)
{
if (obj.TryGetValue(key, out var v))
{
@ -145,11 +145,11 @@ namespace Squidex.Infrastructure.EventSourcing
return string.Empty;
}
public static bool GetBoolean(this JsonObject obj, string key)
public static bool GetBoolean(this EnvelopeHeaders obj, string key)
{
if (obj.TryGetValue<JsonBoolean>(key, out var v))
if (obj.TryGetValue(key, out var v) && v is JsonBoolean boolean)
{
return v.Value;
return boolean.Value;
}
return false;

4
backend/src/Squidex.Infrastructure/EventSourcing/EnvelopeHeaders.cs

@ -9,13 +9,13 @@ using Squidex.Infrastructure.Json.Objects;
namespace Squidex.Infrastructure.EventSourcing
{
public sealed class EnvelopeHeaders : JsonObject
public sealed class EnvelopeHeaders : Dictionary<string, IJsonValue>
{
public EnvelopeHeaders()
{
}
public EnvelopeHeaders(JsonObject headers)
public EnvelopeHeaders(IDictionary<string, IJsonValue> headers)
: base(headers)
{
}

38
backend/src/Squidex.Infrastructure/Json/Newtonsoft/EnvelopeHeadersConverter.cs

@ -1,38 +0,0 @@
// ==========================================================================
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex UG (haftungsbeschraenkt)
// All rights reserved. Licensed under the MIT license.
// ==========================================================================
using Newtonsoft.Json;
using Squidex.Infrastructure.EventSourcing;
using Squidex.Infrastructure.Json.Objects;
namespace Squidex.Infrastructure.Json.Newtonsoft
{
public sealed class EnvelopeHeadersConverter : JsonValueConverter
{
public override IEnumerable<Type> SupportedTypes
{
get { yield return typeof(EnvelopeHeaders); }
}
public override object ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer)
{
var result = base.ReadJson(reader, objectType, existingValue, serializer);
if (result is JsonObject obj)
{
return new EnvelopeHeaders(obj);
}
return result;
}
public override bool CanConvert(Type objectType)
{
return objectType == typeof(EnvelopeHeaders);
}
}
}

21
backend/src/Squidex.Infrastructure/Queries/Json/CompareOperatorJsonConverter.cs → backend/src/Squidex.Infrastructure/Json/Newtonsoft/TypeConverterJsonConverter.cs

@ -7,29 +7,32 @@
using System.ComponentModel;
using Newtonsoft.Json;
using Squidex.Infrastructure.Json;
using JsonException = Squidex.Infrastructure.Json.JsonException;
namespace Squidex.Infrastructure.Queries.Json
namespace Squidex.Infrastructure.Json.Newtonsoft
{
public sealed class CompareOperatorJsonConverter : JsonConverter, ISupportedTypes
public sealed class TypeConverterJsonConverter<T> : JsonConverter, ISupportedTypes
{
private readonly TypeConverter typeConverter = TypeDescriptor.GetConverter(typeof(CompareOperator));
private readonly TypeConverter typeConverter = TypeDescriptor.GetConverter(typeof(T));
public IEnumerable<Type> SupportedTypes
{
get { yield return typeof(CompareOperator); }
get { yield return typeof(T); }
}
public override object? ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer)
{
if (reader.TokenType == JsonToken.Null)
{
return default(T);
}
try
{
return typeConverter.ConvertFromInvariantString(reader.Value?.ToString()!);
}
catch (InvalidCastException ex)
catch (Exception ex)
{
throw new JsonException(ex.Message);
throw new JsonException("Error while converting from string.", ex);
}
}
@ -40,7 +43,7 @@ namespace Squidex.Infrastructure.Queries.Json
public override bool CanConvert(Type objectType)
{
return SupportedTypes.Contains(objectType);
return objectType == typeof(T);
}
}
}

3
backend/src/Squidex/Areas/IdentityServer/Config/DynamicApplicationStore.cs

@ -188,8 +188,7 @@ namespace Squidex.Areas.IdentityServer.Config
ClientSecret = Constants.ClientInternalSecret,
RedirectUris =
{
new Uri(urlGenerator.BuildUrl($"{Constants.PrefixPortal}/signin-internal", false)),
new Uri(urlGenerator.BuildUrl($"{Constants.PrefixOrleans}/signin-internal", false))
new Uri(urlGenerator.BuildUrl("/signin-internal", false)),
},
Permissions =
{

6
backend/src/Squidex/Areas/IdentityServer/Config/IdentityServerServices.cs

@ -85,6 +85,7 @@ namespace Squidex.Areas.IdentityServer.Config
});
builder.SetConfigurationEndpointUris("/identity-server/.well-known/openid-configuration");
builder.SetAccessTokenLifetime(TimeSpan.FromDays(30));
builder.DisableAccessTokenEncryption();
@ -95,8 +96,6 @@ namespace Squidex.Areas.IdentityServer.Config
Constants.ScopeApi,
Constants.ScopePermissions);
builder.SetAccessTokenLifetime(TimeSpan.FromDays(30));
builder.AllowClientCredentialsFlow();
builder.AllowImplicitFlow();
builder.AllowAuthorizationCodeFlow();
@ -136,6 +135,9 @@ namespace Squidex.Areas.IdentityServer.Config
options.UserinfoEndpointUris.Add(
new Uri(urlGenerator.BuildUrl($"{issuerUrl}/connect/userinfo", false)));
options.CryptographyEndpointUris.Add(
new Uri(urlGenerator.BuildUrl($"{issuerUrl}/.well-known/jwks", false)));
options.Issuer = new Uri(urlGenerator.BuildUrl(issuerUrl, false));
});
}

3
backend/src/Squidex/Config/Domain/SerializationServices.cs

@ -42,9 +42,7 @@ namespace Squidex.Config.Domain
settings.Converters.Add(new StringEnumConverter());
settings.ContractResolver = new ConverterContractResolver(
new CompareOperatorJsonConverter(),
new ContentFieldDataConverter(),
new EnvelopeHeadersConverter(),
new JsonValueConverter(),
new StringEnumConverter(),
new SurrogateConverter<ClaimsPrincipal, ClaimsPrincipalSurrogate>(),
@ -56,6 +54,7 @@ namespace Squidex.Config.Domain
new SurrogateConverter<Schema, SchemaSurrogate>(),
new SurrogateConverter<WorkflowStep, WorkflowStepSurrogate>(),
new SurrogateConverter<WorkflowTransition, WorkflowTransitionSurrogate>(),
new TypeConverterJsonConverter<CompareOperator>(),
new WriteonlyGeoJsonConverter());
settings.NullValueHandling = NullValueHandling.Ignore;

3
backend/tests/Squidex.Domain.Apps.Core.Tests/TestHelpers/TestUtils.cs

@ -50,9 +50,7 @@ namespace Squidex.Domain.Apps.Core.TestHelpers
SerializationBinder = new TypeNameSerializationBinder(typeNameRegistry),
ContractResolver = new ConverterContractResolver(
new CompareOperatorJsonConverter(),
new ContentFieldDataConverter(),
new EnvelopeHeadersConverter(),
new JsonValueConverter(),
new StringEnumConverter(),
new SurrogateConverter<ClaimsPrincipal, ClaimsPrincipalSurrogate>(),
@ -64,6 +62,7 @@ namespace Squidex.Domain.Apps.Core.TestHelpers
new SurrogateConverter<Schema, SchemaSurrogate>(),
new SurrogateConverter<WorkflowStep, WorkflowStepSurrogate>(),
new SurrogateConverter<WorkflowTransition, WorkflowTransitionSurrogate>(),
new TypeConverterJsonConverter<CompareOperator>(),
new WriteonlyGeoJsonConverter()),
TypeNameHandling = typeNameHandling

5
backend/tests/Squidex.Domain.Apps.Entities.Tests/Backup/BackupReaderWriterTests.cs

@ -11,6 +11,7 @@ using Squidex.Domain.Apps.Core.TestHelpers;
using Squidex.Infrastructure;
using Squidex.Infrastructure.EventSourcing;
using Squidex.Infrastructure.Json;
using Squidex.Infrastructure.Json.Objects;
using Squidex.Infrastructure.Reflection;
using Squidex.Infrastructure.States;
using Xunit;
@ -183,8 +184,8 @@ namespace Squidex.Domain.Apps.Entities.Backup
var envelope = Envelope.Create(@event);
envelope.Headers.Add("Id", @event.Id.ToString());
envelope.Headers.Add("Index", i);
envelope.Headers.Add("Id", JsonValue.Create(@event.Id));
envelope.Headers.Add("Index", JsonValue.Create(i));
sourceEvents.Add(($"My-{RandomDomainId()}", envelope));
}

25
backend/tests/Squidex.Infrastructure.Tests/EventSourcing/EnvelopeHeadersTests.cs

@ -24,7 +24,10 @@ namespace Squidex.Infrastructure.EventSourcing
[Fact]
public void Should_create_headers_as_copy()
{
var source = JsonValue.Object().Add("Key1", 123);
var source = new EnvelopeHeaders
{
["key1"] = JsonValue.Create(13)
};
var headers = new EnvelopeHeaders(source);
@ -34,24 +37,30 @@ namespace Squidex.Infrastructure.EventSourcing
[Fact]
public void Should_clone_headers()
{
var headers = new EnvelopeHeaders(JsonValue.Object().Add("Key1", 123));
var source = new EnvelopeHeaders
{
["key1"] = JsonValue.Create(13)
};
var clone = headers.CloneHeaders();
var headers = source.CloneHeaders();
CompareHeaders(headers, clone);
CompareHeaders(headers, source);
}
[Fact]
public void Should_serialize_and_deserialize()
{
var value = new EnvelopeHeaders(JsonValue.Object().Add("Key1", 123));
var source = new EnvelopeHeaders
{
["key1"] = JsonValue.Create(13)
};
var deserialized = value.SerializeAndDeserialize();
var deserialized = source.SerializeAndDeserialize();
CompareHeaders(deserialized, value);
CompareHeaders(deserialized, source);
}
private static void CompareHeaders(JsonObject lhs, JsonObject rhs)
private static void CompareHeaders(EnvelopeHeaders lhs, EnvelopeHeaders rhs)
{
foreach (var key in lhs.Keys.Concat(rhs.Keys).Distinct())
{

3
backend/tests/Squidex.Infrastructure.Tests/TestHelpers/TestUtils.cs

@ -37,12 +37,11 @@ namespace Squidex.Infrastructure.TestHelpers
SerializationBinder = new TypeNameSerializationBinder(typeNameRegistry ?? new TypeNameRegistry()),
ContractResolver = new ConverterContractResolver(
new CompareOperatorJsonConverter(),
new JsonValueConverter(),
new StringEnumConverter(),
new SurrogateConverter<ClaimsPrincipal, ClaimsPrincipalSurrogate>(),
new SurrogateConverter<FilterNode<IJsonValue>, JsonFilterSurrogate>(),
new EnvelopeHeadersConverter()),
new TypeConverterJsonConverter<CompareOperator>()),
TypeNameHandling = TypeNameHandling.Auto
}.ConfigureForNodaTime(DateTimeZoneProviders.Tzdb);

2
frontend/src/app/features/content/pages/content/content-event.component.scss

@ -21,7 +21,7 @@ a {
margin-bottom: 1.5rem;
&-created {
font-size: $font-smallest;
font-size: $font-small;
font-weight: normal;
margin: .25rem 0;
}

2
frontend/src/app/shared/components/assets/asset-history.component.scss

@ -23,7 +23,7 @@
margin-bottom: 1.5rem;
&-created {
font-size: $font-smallest;
font-size: $font-small;
font-weight: normal;
margin: .25rem 0;
}

2
frontend/src/app/shared/components/comments/comment.component.scss

@ -42,7 +42,7 @@
}
&-created {
font-size: $font-smallest;
font-size: $font-small;
}
&:hover {

2
frontend/src/app/shared/components/history/history-list.component.scss

@ -25,7 +25,7 @@
margin-bottom: 1.5rem;
&-created {
font-size: $font-smallest;
font-size: $font-small;
}
&-right {

Loading…
Cancel
Save