Cleanup AllInOne reference app

This commit is contained in:
Sipke Schoorstra 2023-05-28 20:31:42 +02:00
parent 607aba1943
commit f0ad68e800
4 changed files with 40 additions and 30 deletions

View file

@ -1,5 +1,5 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFrameworks>net6.0;net7.0</TargetFrameworks>
<Nullable>enable</Nullable>

View file

@ -0,0 +1,33 @@
using Microsoft.AspNetCore.Cors.Infrastructure;
namespace Elsa.AllInOne.Web.Extensions;
public static class CorsOptionsExtensions
{
private static bool AllowAny(IList<string> values) => values.Count == 0 || values[0] == "*";
public static void Configure(this CorsOptions options, IConfigurationSection section)
{
var corsPolicy = section.Get<CorsPolicy>() ?? 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());
});
}
}

View file

@ -1,4 +1,2 @@
@using Esprima.Ast
@namespace Elsa.AllInOne.Web.Pages
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@using Elsa.Workflows.Designer
@namespace Elsa.AllInOne.Web.Pages
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

View file

@ -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<Program>()
.AddWorkflowsFrom<Program>()
);
services.AddHealthChecks();
static bool AllowAny(IList<string> Values) => Values.Count == 0 || Values[0] == "*";
services.AddCors(cors => {
IConfigurationSection corsPolicyConfiguration = configuration.GetSection("CorsPolicy");
CorsPolicy corsPolicy = corsPolicyConfiguration.Get<CorsPolicy>() ?? 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()));