From e82d1a4ad44b6bfe62bbd8a5ecc0db759c9e5065 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Poul=20Kjeldager=20S=C3=B8rensen?= Date: Sat, 30 Jul 2022 14:07:14 +0200 Subject: [PATCH] fix: added policies extensions --- .../DependencyInjectionExtensions.cs | 52 ++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/src/EAVFW.Extensions.WorkflowEngine/DependencyInjectionExtensions.cs b/src/EAVFW.Extensions.WorkflowEngine/DependencyInjectionExtensions.cs index d5766e6..ed6414a 100644 --- a/src/EAVFW.Extensions.WorkflowEngine/DependencyInjectionExtensions.cs +++ b/src/EAVFW.Extensions.WorkflowEngine/DependencyInjectionExtensions.cs @@ -6,8 +6,13 @@ using DotNetDevOps.Extensions.EAVFramework.Shared; using EAVFW.Extensions.WorkflowEngine; using Hangfire; +using Hangfire.Dashboard; using Hangfire.SqlServer; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Routing; using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Options; using Newtonsoft.Json; using Newtonsoft.Json.Linq; @@ -26,10 +31,55 @@ namespace Microsoft.Extensions.DependencyInjection { + public static class HangfireExtensions + { + public static IEndpointRouteBuilder MapAuthorizedHangfireDashboard(this IEndpointRouteBuilder endpoints, string url = "/.well-known/jobs", string policyName = "HangfirePolicyName") + { + + endpoints.MapHangfireDashboard(url, new DashboardOptions() + { + Authorization = new List { } + }) + .RequireAuthorization(policyName); + + + return endpoints; + } + public static AuthorizationOptions AddHangfirePolicy(this AuthorizationOptions options, + string policyName = "HangfirePolicyName", + string schemaName = "eavfw", + string role = "System Administrator") + { + options.AddPolicy(policyName, pb => + { + + pb.AddAuthenticationSchemes(schemaName); + pb.RequireAuthenticatedUser(); + pb.RequireClaim("role", role); + + }); + + return options; + } + + public static AuthorizationOptions AddHangfireAnonymousPolicy(this AuthorizationOptions options, + string policyName = "HangfirePolicyName") + { + options.AddPolicy(policyName, pb => + { + pb.RequireAssertion(c => true); + }); + + return options; + } + + } public static class DependencyInjectionExtensions { - + + + public static IEAVFrameworkBuilder AddWorkFlowEngine(this IEAVFrameworkBuilder builder) where TContext : DynamicContext where TWorkflowRun : DynamicEntity, IWorkflowRun, new()