diff --git a/aspnet-core/aspire/LINGYUN.Abp.MicroService.WorkflowService/WorkflowServiceModule.Configure.cs b/aspnet-core/aspire/LINGYUN.Abp.MicroService.WorkflowService/WorkflowServiceModule.Configure.cs index e4faf6073..02e526715 100644 --- a/aspnet-core/aspire/LINGYUN.Abp.MicroService.WorkflowService/WorkflowServiceModule.Configure.cs +++ b/aspnet-core/aspire/LINGYUN.Abp.MicroService.WorkflowService/WorkflowServiceModule.Configure.cs @@ -9,6 +9,7 @@ using Elsa.Secrets.Persistence.EFCore.Extensions; using Elsa.Secrets.Persistence.EFCore.Sqlite.Extensions; using Elsa.Studio.Authentication.OpenIdConnect.HttpMessageHandlers; using Elsa.Studio.Workflows.Designer.Extensions; +using LINGYUN.Abp.ElsaNext.Permissions; using LINGYUN.Abp.ElsaNext.Studio.Blazor; using LINGYUN.Abp.Localization.CultureMap; using LINGYUN.Abp.LocalizationManagement; @@ -24,6 +25,7 @@ using Microsoft.AspNetCore.DataProtection; using Microsoft.Extensions.Caching.StackExchangeRedis; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; using Microsoft.IdentityModel.Logging; using Microsoft.IdentityModel.Tokens; using Microsoft.OpenApi; @@ -41,6 +43,7 @@ using Volo.Abp.AspNetCore.Components.Web.Theming.MudBlazor.Routing; using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.AspNetCore.Mvc.AntiForgery; using Volo.Abp.Auditing; +using Volo.Abp.Authorization.Permissions; using Volo.Abp.BlobStoring; using Volo.Abp.Caching; using Volo.Abp.EntityFrameworkCore; @@ -489,6 +492,19 @@ public partial class WorkflowServiceModule if (context.Principal?.Identity?.IsAuthenticated == true) { + //var options = context.HttpContext.RequestServices.GetRequiredService>(); + //var permissionChecker = context.HttpContext.RequestServices.GetRequiredService(); + //var permissionNames = options.Value.PermissionMaps.Select(x => x.Source).ToArray(); + //var checkResult = await permissionChecker.IsGrantedAsync(context.Principal, permissionNames); + + //var grantPermissions = checkResult.Result.Where(x => x.Value == PermissionGrantResult.Granted).Select(x => x.Key); + + //var elsaPermissions = options.Value.PermissionMaps.Where(x => grantPermissions.Contains(x.Source)) + // .Select(x => new Claim("permissions", x.Target)) + // .ToList(); + + //context.Principal.AddIdentity(new ClaimsIdentity(elsaPermissions)); + var roleClaims = context.Principal.FindAll(AbpClaimTypes.Role); if (roleClaims.Any(x => x.Value.Equals(AbpRoleConsts.AdminRoleName, StringComparison.CurrentCultureIgnoreCase))) { diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.ElsaNext.Server/LINGYUN/Abp/ElsaNext/Server/Permissions/ElsaWorkflowPermissions.cs b/aspnet-core/modules/elsa/LINGYUN.Abp.ElsaNext.Server/LINGYUN/Abp/ElsaNext/Server/Permissions/ElsaWorkflowPermissions.cs index b9305d658..bc86d23f5 100644 --- a/aspnet-core/modules/elsa/LINGYUN.Abp.ElsaNext.Server/LINGYUN/Abp/ElsaNext/Server/Permissions/ElsaWorkflowPermissions.cs +++ b/aspnet-core/modules/elsa/LINGYUN.Abp.ElsaNext.Server/LINGYUN/Abp/ElsaNext/Server/Permissions/ElsaWorkflowPermissions.cs @@ -6,7 +6,7 @@ public static class ElsaWorkflowPermissions { public static class Definitions { - public const string Default = "workflows-definitions"; + public const string Default = "workflow-definitions"; public const string Read = ElsaPermissionVerbs.Read + ":" + Default; public const string Write = ElsaPermissionVerbs.Write + ":" + Default; public const string Delete = ElsaPermissionVerbs.Delete + ":" + Default; @@ -18,7 +18,7 @@ public static class ElsaWorkflowPermissions } public static class Instances { - public const string Default = "workflows-instances"; + public const string Default = "workflow-instances"; public const string Read = ElsaPermissionVerbs.Read + ":" + Default; public const string Write = ElsaPermissionVerbs.Write + ":" + Default; public const string Delete = ElsaPermissionVerbs.Delete + ":" + Default; diff --git a/aspnet-core/modules/elsa/LINGYUN.Abp.ElsaNext/LINGYUN/Abp/ElsaNext/Permissions/AbpElsaPermissionMapClaimsPrincipalContributor.cs b/aspnet-core/modules/elsa/LINGYUN.Abp.ElsaNext/LINGYUN/Abp/ElsaNext/Permissions/AbpElsaPermissionMapClaimsPrincipalContributor.cs index 663306cf1..133848cdc 100644 --- a/aspnet-core/modules/elsa/LINGYUN.Abp.ElsaNext/LINGYUN/Abp/ElsaNext/Permissions/AbpElsaPermissionMapClaimsPrincipalContributor.cs +++ b/aspnet-core/modules/elsa/LINGYUN.Abp.ElsaNext/LINGYUN/Abp/ElsaNext/Permissions/AbpElsaPermissionMapClaimsPrincipalContributor.cs @@ -14,7 +14,7 @@ // public async override Task ContributeAsync(AbpClaimsPrincipalContributorContext context) // { // var claimsIdentity = context.ClaimsPrincipal.Identities.First(); -// if (!claimsIdentity.IsAuthenticated || claimsIdentity.FindFirst(PermissionClaimType) != null) +// if (!claimsIdentity.IsAuthenticated) // { // return; // } @@ -22,14 +22,14 @@ // var options = context.ServiceProvider.GetRequiredService>(); // var permissionChecker = context.ServiceProvider.GetRequiredService(); // var permissionNames = options.Value.PermissionMaps.Select(x => x.Source).ToArray(); -// var checkResult = await permissionChecker.IsGrantedAsync(permissionNames); +// var checkResult = await permissionChecker.IsGrantedAsync(context.ClaimsPrincipal, permissionNames); // var grantPermissions = checkResult.Result.Where(x => x.Value == PermissionGrantResult.Granted).Select(x => x.Key); // // PermissionNames.ClaimType => permissions // // Permission.ToString() => $"{Verb}{Separator}{Resource}"; // var elsaPermissions = options.Value.PermissionMaps.Where(x => grantPermissions.Contains(x.Source)) -// .Select(x => new AbpDynamicClaim("permissions", x.Target)) +// .Select(x => new AbpDynamicClaim(PermissionClaimType, x.Target)) // .ToList(); // await AddDynamicClaimsAsync(context, claimsIdentity, elsaPermissions);