diff --git a/modules/openiddict/Volo.Abp.OpenIddict.sln b/modules/openiddict/Volo.Abp.OpenIddict.sln index beafc8c518..c95dc5f251 100644 --- a/modules/openiddict/Volo.Abp.OpenIddict.sln +++ b/modules/openiddict/Volo.Abp.OpenIddict.sln @@ -37,6 +37,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenIddict.Demo.API", "app\ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenIddict.Demo.Client.BlazorWASM", "app\OpenIddict.Demo.Client.BlazorWASM\OpenIddict.Demo.Client.BlazorWASM.csproj", "{F3853F2B-72D4-496C-B59C-87E2759AD79B}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.PermissionManagement.Domain.OpenIddict", "src\Volo.Abp.PermissionManagement.Domain.OpenIddict\Volo.Abp.PermissionManagement.Domain.OpenIddict.csproj", "{674D0A62-4F7B-436C-83A9-AA8FE03F3A11}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -99,6 +101,10 @@ Global {F3853F2B-72D4-496C-B59C-87E2759AD79B}.Debug|Any CPU.Build.0 = Debug|Any CPU {F3853F2B-72D4-496C-B59C-87E2759AD79B}.Release|Any CPU.ActiveCfg = Release|Any CPU {F3853F2B-72D4-496C-B59C-87E2759AD79B}.Release|Any CPU.Build.0 = Release|Any CPU + {674D0A62-4F7B-436C-83A9-AA8FE03F3A11}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {674D0A62-4F7B-436C-83A9-AA8FE03F3A11}.Debug|Any CPU.Build.0 = Debug|Any CPU + {674D0A62-4F7B-436C-83A9-AA8FE03F3A11}.Release|Any CPU.ActiveCfg = Release|Any CPU + {674D0A62-4F7B-436C-83A9-AA8FE03F3A11}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -118,6 +124,7 @@ Global {1EF0F35E-65BE-4994-9BC4-9D3992A9B05C} = {2B5CD179-FF7B-428F-98F6-2ADBB9538D18} {70FD6E90-BBE8-4DA1-AE07-55064803225B} = {2B5CD179-FF7B-428F-98F6-2ADBB9538D18} {F3853F2B-72D4-496C-B59C-87E2759AD79B} = {2B5CD179-FF7B-428F-98F6-2ADBB9538D18} + {674D0A62-4F7B-436C-83A9-AA8FE03F3A11} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {C09128AF-C73F-ED7D-33F5-69BF7D934D50} diff --git a/modules/openiddict/src/Volo.Abp.PermissionManagement.Domain.OpenIddict/FodyWeavers.xml b/modules/openiddict/src/Volo.Abp.PermissionManagement.Domain.OpenIddict/FodyWeavers.xml new file mode 100644 index 0000000000..bc5a74a236 --- /dev/null +++ b/modules/openiddict/src/Volo.Abp.PermissionManagement.Domain.OpenIddict/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + diff --git a/modules/openiddict/src/Volo.Abp.PermissionManagement.Domain.OpenIddict/FodyWeavers.xsd b/modules/openiddict/src/Volo.Abp.PermissionManagement.Domain.OpenIddict/FodyWeavers.xsd new file mode 100644 index 0000000000..3f3946e282 --- /dev/null +++ b/modules/openiddict/src/Volo.Abp.PermissionManagement.Domain.OpenIddict/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/modules/openiddict/src/Volo.Abp.PermissionManagement.Domain.OpenIddict/Volo.Abp.PermissionManagement.Domain.OpenIddict.csproj b/modules/openiddict/src/Volo.Abp.PermissionManagement.Domain.OpenIddict/Volo.Abp.PermissionManagement.Domain.OpenIddict.csproj new file mode 100644 index 0000000000..2ba27b4e28 --- /dev/null +++ b/modules/openiddict/src/Volo.Abp.PermissionManagement.Domain.OpenIddict/Volo.Abp.PermissionManagement.Domain.OpenIddict.csproj @@ -0,0 +1,22 @@ + + + + + + + netstandard2.0 + Volo.Abp.PermissionManagement.Domain.OpenIddict + Volo.Abp.PermissionManagement.Domain.OpenIddict + $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; + false + false + false + + + + + + + + + diff --git a/modules/openiddict/src/Volo.Abp.PermissionManagement.Domain.OpenIddict/Volo/Abp/PermissionManagement/OpenIddict/AbpPermissionManagementDomainOpenIddictModule.cs b/modules/openiddict/src/Volo.Abp.PermissionManagement.Domain.OpenIddict/Volo/Abp/PermissionManagement/OpenIddict/AbpPermissionManagementDomainOpenIddictModule.cs new file mode 100644 index 0000000000..1bf2bf140d --- /dev/null +++ b/modules/openiddict/src/Volo.Abp.PermissionManagement.Domain.OpenIddict/Volo/Abp/PermissionManagement/OpenIddict/AbpPermissionManagementDomainOpenIddictModule.cs @@ -0,0 +1,21 @@ +using Volo.Abp.Authorization.Permissions; +using Volo.Abp.Modularity; +using Volo.Abp.OpenIddict; + +namespace Volo.Abp.PermissionManagement.OpenIddict; + +[DependsOn( + typeof(AbpOpenIddictDomainSharedModule), + typeof(AbpPermissionManagementDomainModule) +)] +public class AbpPermissionManagementDomainOpenIddictModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.ManagementProviders.Add(); + options.ProviderPolicies[ClientPermissionValueProvider.ProviderName] = "OpenIddictPro.Application.ManagePermissions"; + }); + } +} diff --git a/modules/openiddict/src/Volo.Abp.PermissionManagement.Domain.OpenIddict/Volo/Abp/PermissionManagement/OpenIddict/ApplicationPermissionManagementProvider.cs b/modules/openiddict/src/Volo.Abp.PermissionManagement.Domain.OpenIddict/Volo/Abp/PermissionManagement/OpenIddict/ApplicationPermissionManagementProvider.cs new file mode 100644 index 0000000000..4c4d6fe398 --- /dev/null +++ b/modules/openiddict/src/Volo.Abp.PermissionManagement.Domain.OpenIddict/Volo/Abp/PermissionManagement/OpenIddict/ApplicationPermissionManagementProvider.cs @@ -0,0 +1,55 @@ +using System.Threading.Tasks; +using Volo.Abp.Authorization.Permissions; +using Volo.Abp.Guids; +using Volo.Abp.MultiTenancy; + +namespace Volo.Abp.PermissionManagement.OpenIddict; + +public class ApplicationPermissionManagementProvider : PermissionManagementProvider +{ + public override string Name => ClientPermissionValueProvider.ProviderName; + + public ApplicationPermissionManagementProvider( + IPermissionGrantRepository permissionGrantRepository, + IGuidGenerator guidGenerator, + ICurrentTenant currentTenant) + : base( + permissionGrantRepository, + guidGenerator, + currentTenant) + { + + } + + public override Task CheckAsync(string name, string providerName, string providerKey) + { + using (CurrentTenant.Change(null)) + { + return base.CheckAsync(name, providerName, providerKey); + } + } + + protected override Task GrantAsync(string name, string providerKey) + { + using (CurrentTenant.Change(null)) + { + return base.GrantAsync(name, providerKey); + } + } + + protected override Task RevokeAsync(string name, string providerKey) + { + using (CurrentTenant.Change(null)) + { + return base.RevokeAsync(name, providerKey); + } + } + + public override Task SetAsync(string name, string providerKey, bool isGranted) + { + using (CurrentTenant.Change(null)) + { + return base.SetAsync(name, providerKey, isGranted); + } + } +} diff --git a/nupkg/common.ps1 b/nupkg/common.ps1 index 48f3cf9114..37f66c7b0e 100644 --- a/nupkg/common.ps1 +++ b/nupkg/common.ps1 @@ -347,6 +347,7 @@ $projects = ( "modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared", "modules/openiddict/src/Volo.Abp.OpenIddict.EntityFrameworkCore", "modules/openiddict/src/Volo.Abp.OpenIddict.MongoDB", + "modules/openiddict/src/Volo.Abp.PermissionManagement.Domain.OpenIddict", # modules/permission-management "modules/permission-management/src/Volo.Abp.PermissionManagement.Application.Contracts",