From eb2c866fc0b3e90ccc5ad36deb31ad93f3196dcb Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Sat, 22 Apr 2023 20:43:54 +0200 Subject: [PATCH] Update CompleteTask endpoint to use permissions instead of policy --- .../Elsa.Workflows.Api/Endpoints/Tasks/Complete/Endpoint.cs | 2 +- .../Elsa.Workflows.Api/Features/WorkflowsApiFeature.cs | 6 ------ .../aspnet/Elsa.Samples.Webhooks.ExternalApp/Program.cs | 4 +++- .../aspnet/Elsa.Samples.Webhooks.WorkflowServer/Program.cs | 4 ++-- .../Elsa.Samples.Webhooks.WorkflowServer/appsettings.json | 4 ++-- .../Elsa.Samples.Webhooks.WorkflowServer/run-workflow.http | 2 +- 6 files changed, 9 insertions(+), 13 deletions(-) diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/Tasks/Complete/Endpoint.cs b/src/modules/Elsa.Workflows.Api/Endpoints/Tasks/Complete/Endpoint.cs index 32f3adc01..1e2ef9a97 100644 --- a/src/modules/Elsa.Workflows.Api/Endpoints/Tasks/Complete/Endpoint.cs +++ b/src/modules/Elsa.Workflows.Api/Endpoints/Tasks/Complete/Endpoint.cs @@ -21,7 +21,7 @@ public class Complete : ElsaEndpoint public override void Configure() { Post("/tasks/{taskId}/complete"); - Policies("CompleteTask"); + ConfigurePermissions("tasks:complete"); } /// diff --git a/src/modules/Elsa.Workflows.Api/Features/WorkflowsApiFeature.cs b/src/modules/Elsa.Workflows.Api/Features/WorkflowsApiFeature.cs index dc01ac3db..54f296be5 100644 --- a/src/modules/Elsa.Workflows.Api/Features/WorkflowsApiFeature.cs +++ b/src/modules/Elsa.Workflows.Api/Features/WorkflowsApiFeature.cs @@ -26,11 +26,6 @@ public class WorkflowsApiFeature : FeatureBase { } - /// - /// A delegate that configures the policy requirements for the /tasks/{taskId}/complete API endpoint. - /// - public Action CompleteTaskPolicy { get; set; } = policy => policy.RequireAuthenticatedUser(); - /// public override void Configure() { @@ -40,7 +35,6 @@ public class WorkflowsApiFeature : FeatureBase /// public override void Apply() { - Services.AddAuthorization(auth => auth.AddPolicy("CompleteTask", CompleteTaskPolicy)); Services.AddSingleton(); Module.AddFastEndpointsFromModule(); } diff --git a/src/samples/aspnet/Elsa.Samples.Webhooks.ExternalApp/Program.cs b/src/samples/aspnet/Elsa.Samples.Webhooks.ExternalApp/Program.cs index eaa19f54e..503e10f57 100644 --- a/src/samples/aspnet/Elsa.Samples.Webhooks.ExternalApp/Program.cs +++ b/src/samples/aspnet/Elsa.Samples.Webhooks.ExternalApp/Program.cs @@ -1,3 +1,4 @@ +using System.Net.Http.Headers; using Elsa.Samples.Webhooks.ExternalApp.Jobs; var builder = WebApplication.CreateBuilder(args); @@ -8,7 +9,8 @@ builder.Services.AddControllers(); // Configure the background worker with an HTTP client that can report workflow task completion. builder.Services.AddHttpClient(httpClient => { - httpClient.BaseAddress = new Uri("https://localhost:7164/elsa/api/"); + httpClient.BaseAddress = new Uri("https://localhost:5001/elsa/api/"); + httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("ApiKey", Guid.Empty.ToString()); // Use the admin API key. }); var app = builder.Build(); diff --git a/src/samples/aspnet/Elsa.Samples.Webhooks.WorkflowServer/Program.cs b/src/samples/aspnet/Elsa.Samples.Webhooks.WorkflowServer/Program.cs index 08398db0b..93583f907 100644 --- a/src/samples/aspnet/Elsa.Samples.Webhooks.WorkflowServer/Program.cs +++ b/src/samples/aspnet/Elsa.Samples.Webhooks.WorkflowServer/Program.cs @@ -24,8 +24,8 @@ builder.Services.AddElsa(elsa => options.AccessTokenLifetime = TimeSpan.FromDays(1); }; }) - .UseWorkflowsApi(api => api.CompleteTaskPolicy = policy => policy.RequireAssertion(_ => true)) // Allows anonymous requests. Will be replaced with an API key scheme. - .UseDefaultAuthentication() + .UseWorkflowsApi() + .UseDefaultAuthentication(auth => auth.UseAdminApiKey()) .UseWebhooks(webhooks => webhooks.WebhookOptions = options => builder.Configuration.GetSection("Webhooks").Bind(options)); }); diff --git a/src/samples/aspnet/Elsa.Samples.Webhooks.WorkflowServer/appsettings.json b/src/samples/aspnet/Elsa.Samples.Webhooks.WorkflowServer/appsettings.json index aee82820d..6ec2431a1 100644 --- a/src/samples/aspnet/Elsa.Samples.Webhooks.WorkflowServer/appsettings.json +++ b/src/samples/aspnet/Elsa.Samples.Webhooks.WorkflowServer/appsettings.json @@ -2,7 +2,7 @@ "Logging": { "LogLevel": { "Default": "Information", - "Microsoft.AspNetCore": "Warning" + "Microsoft.AspNetCore": "Debug" } }, "AllowedHosts": "*", @@ -12,7 +12,7 @@ "EventTypes": [ "RunTask" ], - "Url": "https://localhost:7100/webhooks/run-task" + "Url": "https://localhost:5002/webhooks/run-task" } ] } diff --git a/src/samples/aspnet/Elsa.Samples.Webhooks.WorkflowServer/run-workflow.http b/src/samples/aspnet/Elsa.Samples.Webhooks.WorkflowServer/run-workflow.http index 52c41fdba..52c1aec2a 100644 --- a/src/samples/aspnet/Elsa.Samples.Webhooks.WorkflowServer/run-workflow.http +++ b/src/samples/aspnet/Elsa.Samples.Webhooks.WorkflowServer/run-workflow.http @@ -1 +1 @@ -POST https://localhost:7164/workflows/hungry \ No newline at end of file +POST https://localhost:5001/workflows/hungry \ No newline at end of file