From f2374acd70cba299faae52d9ba454816a1abae69 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Mon, 6 Apr 2020 10:01:34 +0200 Subject: [PATCH] Tags fix. --- .../Validation/CompositeUniqueValidator.cs | 6 ++++-- .../CompositeUniqueValidatorFactory.cs | 5 +++++ .../Schemas/FieldProperties.cs | 2 +- .../Schemas/SchemaProperties.cs | 2 +- ...ameSiteCookiesServiceCollectionExtensions.cs | 6 +++--- .../Fixtures/ClientManagerFixture.cs | 17 ++++++++++++++++- frontend/app-config/webpack.config.js | 1 + 7 files changed, 31 insertions(+), 8 deletions(-) diff --git a/backend/extensions/Squidex.Extensions/Validation/CompositeUniqueValidator.cs b/backend/extensions/Squidex.Extensions/Validation/CompositeUniqueValidator.cs index ddcf12fe2..47f2f0812 100644 --- a/backend/extensions/Squidex.Extensions/Validation/CompositeUniqueValidator.cs +++ b/backend/extensions/Squidex.Extensions/Validation/CompositeUniqueValidator.cs @@ -62,7 +62,7 @@ namespace Squidex.Extensions.Validation } } - private static ClrValue? TryGetValue(IRootField field, NamedContentData data) + private static ClrValue TryGetValue(IRootField field, NamedContentData data) { var value = JsonValue.Null; @@ -97,7 +97,9 @@ namespace Squidex.Extensions.Validation private bool IsValidateableField(IRootField field) { - return field.Partitioning == Partitioning.Invariant && field.RawProperties.Tags.Contains(tag) && + return + field.Partitioning == Partitioning.Invariant && + field.RawProperties.Tags?.Contains(tag) == true && (field.RawProperties is BooleanFieldProperties || field.RawProperties is NumberFieldProperties || field.RawProperties is ReferencesFieldProperties || diff --git a/backend/extensions/Squidex.Extensions/Validation/CompositeUniqueValidatorFactory.cs b/backend/extensions/Squidex.Extensions/Validation/CompositeUniqueValidatorFactory.cs index b7a47d05d..a2c6ecff0 100644 --- a/backend/extensions/Squidex.Extensions/Validation/CompositeUniqueValidatorFactory.cs +++ b/backend/extensions/Squidex.Extensions/Validation/CompositeUniqueValidatorFactory.cs @@ -35,6 +35,11 @@ namespace Squidex.Extensions.Validation private static IEnumerable ValidatorTags(IEnumerable tags) { + if (tags == null) + { + yield break; + } + foreach (var tag in tags) { if (tag.StartsWith(Prefix, StringComparison.OrdinalIgnoreCase) && tag.Length > Prefix.Length) diff --git a/backend/src/Squidex.Domain.Apps.Core.Model/Schemas/FieldProperties.cs b/backend/src/Squidex.Domain.Apps.Core.Model/Schemas/FieldProperties.cs index e0af1b252..5765770c1 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Model/Schemas/FieldProperties.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Model/Schemas/FieldProperties.cs @@ -18,7 +18,7 @@ namespace Squidex.Domain.Apps.Core.Schemas public string? EditorUrl { get; set; } - public ReadOnlyCollection Tags { get; set; } + public ReadOnlyCollection? Tags { get; set; } public abstract T Accept(IFieldPropertiesVisitor visitor); diff --git a/backend/src/Squidex.Domain.Apps.Core.Model/Schemas/SchemaProperties.cs b/backend/src/Squidex.Domain.Apps.Core.Model/Schemas/SchemaProperties.cs index c93ed3c9d..bb2e8a27c 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Model/Schemas/SchemaProperties.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Model/Schemas/SchemaProperties.cs @@ -13,7 +13,7 @@ namespace Squidex.Domain.Apps.Core.Schemas [Equals(DoNotAddEqualityOperators = true)] public sealed class SchemaProperties : NamedElementPropertiesBase { - public ReadOnlyCollection Tags { get; set; } + public ReadOnlyCollection? Tags { get; set; } public bool DeepEquals(SchemaProperties properties) { diff --git a/backend/src/Squidex.Web/Pipeline/SameSiteCookiesServiceCollectionExtensions.cs b/backend/src/Squidex.Web/Pipeline/SameSiteCookiesServiceCollectionExtensions.cs index 2bd696859..74dd089a3 100644 --- a/backend/src/Squidex.Web/Pipeline/SameSiteCookiesServiceCollectionExtensions.cs +++ b/backend/src/Squidex.Web/Pipeline/SameSiteCookiesServiceCollectionExtensions.cs @@ -25,7 +25,7 @@ namespace Squidex.Web.Pipeline /// Configures a cookie policy to properly set the SameSite attribute /// for Browsers that handle unknown values as Strict. Ensure that you /// add the - /// into the pipeline before sending any cookies! + /// into the pipeline before sending any cookies!. /// /// /// Minimum ASPNET Core Version required for this code: @@ -45,7 +45,7 @@ namespace Squidex.Web.Pipeline /// - https://tools.ietf.org/html/draft-west-cookie-incrementalism-00 /// - https://www.chromium.org/updates/same-site /// - https://devblogs.microsoft.com/aspnet/upcoming-samesite-cookie-changes-in-asp-net-and-asp-net-core/ - /// - https://bugs.webkit.org/show_bug.cgi?id=198181 + /// - https://bugs.webkit.org/show_bug.cgi?id=198181. /// /// The service collection to register into. /// The modified . @@ -82,7 +82,7 @@ namespace Squidex.Web.Pipeline /// /// /// This code is taken from Microsoft: - /// https://devblogs.microsoft.com/aspnet/upcoming-samesite-cookie-changes-in-asp-net-and-asp-net-core/ + /// https://devblogs.microsoft.com/aspnet/upcoming-samesite-cookie-changes-in-asp-net-and-asp-net-core/. /// /// The user agent string to check. /// Whether the specified user agent (browser) accepts SameSite=None or not. diff --git a/backend/tools/TestSuite/TestSuite.Shared/Fixtures/ClientManagerFixture.cs b/backend/tools/TestSuite/TestSuite.Shared/Fixtures/ClientManagerFixture.cs index 4b714ab66..5a3ce8741 100644 --- a/backend/tools/TestSuite/TestSuite.Shared/Fixtures/ClientManagerFixture.cs +++ b/backend/tools/TestSuite/TestSuite.Shared/Fixtures/ClientManagerFixture.cs @@ -6,13 +6,15 @@ // ========================================================================== using System; +using System.Net.Http; using Squidex.ClientLibrary; +using Squidex.ClientLibrary.Configuration; namespace TestSuite.Fixtures { public class ClientManagerFixture : IDisposable { - public string ServerUrl { get; } = "http://localhost:5000"; + public string ServerUrl { get; } = "https://localhost:5001"; public string ClientId { get; } = "root"; @@ -22,6 +24,18 @@ namespace TestSuite.Fixtures public SquidexClientManager ClientManager { get; } + public sealed class Configurator : IHttpConfigurator + { + public void Configure(HttpClient httpClient) + { + } + + public void Configure(HttpClientHandler httpClientHandler) + { + httpClientHandler.ServerCertificateCustomValidationCallback = (message, certificate, chain, error) => true; + } + } + public ClientManagerFixture() { ClientManager = new SquidexClientManager(new SquidexOptions @@ -29,6 +43,7 @@ namespace TestSuite.Fixtures AppName = AppName, ClientId = ClientId, ClientSecret = ClientSecret, + Configurator = new Configurator(), ReadResponseAsString = true, Url = ServerUrl }); diff --git a/frontend/app-config/webpack.config.js b/frontend/app-config/webpack.config.js index f12ece2df..7ee2d64aa 100644 --- a/frontend/app-config/webpack.config.js +++ b/frontend/app-config/webpack.config.js @@ -209,6 +209,7 @@ module.exports = function (env) { headers: { 'Access-Control-Allow-Origin': '*' }, + https: true, historyApiFallback: true } };