diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/ISettingPageContributor.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/ISettingPageContributor.cs index 16bb6962d9..7bf0653380 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/ISettingPageContributor.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/ISettingPageContributor.cs @@ -1,8 +1,12 @@ -using System.Threading.Tasks; +using System; +using System.Threading.Tasks; namespace Volo.Abp.SettingManagement.Web.Pages.SettingManagement; public interface ISettingPageContributor { Task ConfigureAsync(SettingPageCreationContext context); + + [Obsolete("Use SettingPageContributorBase as base class and call `RequiredPermissions` or `RequiredFeatures` for better performance.")] + Task CheckPermissionsAsync(SettingPageCreationContext context); } diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/SettingPageContributorBase.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/SettingPageContributorBase.cs index 7e9d1f7954..b79c452df9 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/SettingPageContributorBase.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/SettingPageContributorBase.cs @@ -51,4 +51,9 @@ public abstract class SettingPageContributorBase : ISettingPageContributor } public abstract Task ConfigureAsync(SettingPageCreationContext context); + + public virtual Task CheckPermissionsAsync(SettingPageCreationContext context) + { + return Task.FromResult(true); + } } diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/SettingPageContributorManager.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/SettingPageContributorManager.cs index 6bd70f2eae..e1f597b85a 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/SettingPageContributorManager.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/SettingPageContributorManager.cs @@ -83,6 +83,17 @@ public class SettingPageContributorManager : IScopedDependency } } + var context = new SettingPageCreationContext(ServiceProvider); + foreach (var contributor in contributors.Where(x => x is not SettingPageContributorBase)) + { +#pragma warning disable CS0618 + if (await contributor.CheckPermissionsAsync(context)) +#pragma warning restore CS0618 + { + availableContributors.Add(contributor); + } + } + return availableContributors; } }