elsa-core/src/bundles/Elsa.ServerAndStudio.Web/Program.cs

84 lines
3.1 KiB
C#
Raw Normal View History

using Elsa.ServerAndStudio.Web.Extensions;
using Elsa.EntityFrameworkCore.Extensions;
2023-01-14 11:22:38 +00:00
using Elsa.EntityFrameworkCore.Modules.Management;
using Elsa.EntityFrameworkCore.Modules.Runtime;
using Elsa.Extensions;
2023-01-14 11:22:38 +00:00
using Microsoft.AspNetCore.Mvc;
2022-04-29 12:40:25 +00:00
const bool useMassTransit = true;
2022-04-29 12:40:25 +00:00
var builder = WebApplication.CreateBuilder(args);
builder.WebHost.UseStaticWebAssets();
2022-04-29 12:40:25 +00:00
var services = builder.Services;
2022-12-09 11:24:05 +00:00
var configuration = builder.Configuration;
var sqliteConnectionString = configuration.GetConnectionString("Sqlite")!;
2022-12-09 11:24:05 +00:00
var identitySection = configuration.GetSection("Identity");
2023-01-01 21:54:07 +00:00
var identityTokenSection = identitySection.GetSection("Tokens");
2022-04-29 12:40:25 +00:00
// Add Elsa services.
2022-04-29 12:40:25 +00:00
services
.AddElsa(elsa =>
{
elsa
.UseSasTokens()
.UseIdentity(identity =>
{
identity.IdentityOptions = options => identitySection.Bind(options);
identity.TokenOptions = options => identityTokenSection.Bind(options);
identity.UseConfigurationBasedUserProvider(options => identitySection.Bind(options));
identity.UseConfigurationBasedApplicationProvider(options => identitySection.Bind(options));
identity.UseConfigurationBasedRoleProvider(options => identitySection.Bind(options));
})
.UseDefaultAuthentication()
.UseWorkflowManagement(management => management.UseEntityFrameworkCore(ef => ef.UseSqlite(sqliteConnectionString)))
.UseWorkflowRuntime(runtime => runtime.UseEntityFrameworkCore(ef => ef.UseSqlite(sqliteConnectionString)))
.UseScheduling()
.UseJavaScript(options => options.AllowClrAccess = true)
.UseLiquid()
.UseCSharp()
.UsePython()
.UseHttp(http => http.ConfigureHttpOptions = options => configuration.GetSection("Http").Bind(options))
.UseEmail(email => email.ConfigureOptions = options => configuration.GetSection("Smtp").Bind(options))
.UseWebhooks(webhooks => webhooks.WebhookOptions = options => builder.Configuration.GetSection("Webhooks").Bind(options))
.UseWorkflowsApi()
.UseRealTimeWorkflows()
.AddActivitiesFrom<Program>()
.AddWorkflowsFrom<Program>();
if (useMassTransit)
2022-12-09 11:24:05 +00:00
{
elsa.UseMassTransit();
}
});
2022-12-09 11:24:05 +00:00
services.AddHealthChecks();
2023-05-28 18:31:42 +00:00
services.AddCors(cors => cors.Configure(configuration.GetSection("CorsPolicy")));
2022-04-29 12:40:25 +00:00
// Razor Pages.
2023-01-14 11:22:38 +00:00
services.AddRazorPages(options => options.Conventions.ConfigureFilter(new IgnoreAntiforgeryTokenAttribute()));
2022-04-29 12:40:25 +00:00
// Configure middleware pipeline.
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseBlazorFrameworkFiles();
app.MapHealthChecks("/health");
app.UseRouting();
2023-01-14 11:22:38 +00:00
app.UseCors();
2022-04-29 12:40:25 +00:00
app.UseStaticFiles();
2022-12-09 11:24:05 +00:00
app.UseAuthentication();
2022-04-29 12:40:25 +00:00
app.UseAuthorization();
app.UseWorkflowsApi();
app.UseWorkflows();
app.UseWorkflowsSignalRHubs();
app.MapFallbackToPage("/_Host");
app.Run();