From f0ad68e800076f33354e521dac2a75006cc705ed Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Sun, 28 May 2023 20:31:42 +0200 Subject: [PATCH] Cleanup AllInOne reference app --- .../Elsa.AllInOne.Web.csproj | 2 +- .../Extensions/CorsOptionsExtensions.cs | 33 +++++++++++++++++++ .../Pages/_ViewImports.cshtml | 6 ++-- src/bundles/Elsa.AllInOne.Web/Program.cs | 29 +++------------- 4 files changed, 40 insertions(+), 30 deletions(-) create mode 100644 src/bundles/Elsa.AllInOne.Web/Extensions/CorsOptionsExtensions.cs diff --git a/src/bundles/Elsa.AllInOne.Web/Elsa.AllInOne.Web.csproj b/src/bundles/Elsa.AllInOne.Web/Elsa.AllInOne.Web.csproj index 1b138bc77..3cc987915 100644 --- a/src/bundles/Elsa.AllInOne.Web/Elsa.AllInOne.Web.csproj +++ b/src/bundles/Elsa.AllInOne.Web/Elsa.AllInOne.Web.csproj @@ -1,5 +1,5 @@ - + net6.0;net7.0 enable diff --git a/src/bundles/Elsa.AllInOne.Web/Extensions/CorsOptionsExtensions.cs b/src/bundles/Elsa.AllInOne.Web/Extensions/CorsOptionsExtensions.cs new file mode 100644 index 000000000..2a591a583 --- /dev/null +++ b/src/bundles/Elsa.AllInOne.Web/Extensions/CorsOptionsExtensions.cs @@ -0,0 +1,33 @@ +using Microsoft.AspNetCore.Cors.Infrastructure; + +namespace Elsa.AllInOne.Web.Extensions; + +public static class CorsOptionsExtensions +{ + private static bool AllowAny(IList values) => values.Count == 0 || values[0] == "*"; + + public static void Configure(this CorsOptions options, IConfigurationSection section) + { + var corsPolicy = section.Get() ?? new CorsPolicy(); + options.AddDefaultPolicy(policy => { + var headers = corsPolicy.Headers; + var origins = corsPolicy.Origins; + var methods = corsPolicy.Methods; + + if (AllowAny(headers)) + policy.AllowAnyHeader(); + else + policy.WithHeaders(headers.ToArray()); + + if (AllowAny(origins)) + policy.AllowAnyOrigin(); + else + policy.WithOrigins(origins.ToArray()); + + if (AllowAny(methods)) + policy.AllowAnyMethod(); + else + policy.WithMethods(methods.ToArray()); + }); + } +} \ No newline at end of file diff --git a/src/bundles/Elsa.AllInOne.Web/Pages/_ViewImports.cshtml b/src/bundles/Elsa.AllInOne.Web/Pages/_ViewImports.cshtml index 9b1c88a64..76466a876 100644 --- a/src/bundles/Elsa.AllInOne.Web/Pages/_ViewImports.cshtml +++ b/src/bundles/Elsa.AllInOne.Web/Pages/_ViewImports.cshtml @@ -1,4 +1,2 @@ -@using Esprima.Ast -@namespace Elsa.AllInOne.Web.Pages -@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers -@using Elsa.Workflows.Designer \ No newline at end of file +@namespace Elsa.AllInOne.Web.Pages +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers \ No newline at end of file diff --git a/src/bundles/Elsa.AllInOne.Web/Program.cs b/src/bundles/Elsa.AllInOne.Web/Program.cs index 270a41d3a..72e47f216 100644 --- a/src/bundles/Elsa.AllInOne.Web/Program.cs +++ b/src/bundles/Elsa.AllInOne.Web/Program.cs @@ -1,3 +1,4 @@ +using Elsa.AllInOne.Web.Extensions; using Elsa.EntityFrameworkCore.Extensions; using Elsa.Extensions; using Elsa.EntityFrameworkCore.Modules.Management; @@ -40,35 +41,13 @@ services .UseEmail(email => email.ConfigureOptions = options => configuration.GetSection("Smtp").Bind(options)) .UseWebhooks(webhooks => webhooks.WebhookOptions = options => builder.Configuration.GetSection("Webhooks").Bind(options)) .UseWorkflowsApi() + .AddActivitiesFrom() + .AddWorkflowsFrom() ); services.AddHealthChecks(); -static bool AllowAny(IList Values) => Values.Count == 0 || Values[0] == "*"; -services.AddCors(cors => { - IConfigurationSection corsPolicyConfiguration = configuration.GetSection("CorsPolicy"); - CorsPolicy corsPolicy = corsPolicyConfiguration.Get() ?? new CorsPolicy(); - cors.AddDefaultPolicy(policy => { - var headers = corsPolicy.Headers; - var origins = corsPolicy.Origins; - var methods = corsPolicy.Methods; - - if (AllowAny(headers)) - policy.AllowAnyHeader(); - else - policy.WithHeaders(headers.ToArray()); - - if (AllowAny(origins)) - policy.AllowAnyOrigin(); - else - policy.WithOrigins(origins.ToArray()); - - if (AllowAny(methods)) - policy.AllowAnyMethod(); - else - policy.WithMethods(methods.ToArray()); - }); -}); +services.AddCors(cors => cors.Configure(configuration.GetSection("CorsPolicy"))); // Razor Pages. services.AddRazorPages(options => options.Conventions.ConfigureFilter(new IgnoreAntiforgeryTokenAttribute()));