Browse Source

Resolves #958

pull/1025/head
Yunus Emre Kalkan 8 years ago
parent
commit
8eff57d67d
  1. 31
      modules/setting-management/src/Volo.Abp.SettingManagement.Web/Navigation/SettingManagementMainMenuContributor.cs
  2. 2
      modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/ISettingPageContributor.cs

31
modules/setting-management/src/Volo.Abp.SettingManagement.Web/Navigation/SettingManagementMainMenuContributor.cs

@ -1,4 +1,5 @@
using Microsoft.Extensions.DependencyInjection; using System;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using System.Linq; using System.Linq;
@ -11,17 +12,22 @@ namespace Volo.Abp.SettingManagement.Web.Navigation
{ {
public class SettingManagementMainMenuContributor : IMenuContributor public class SettingManagementMainMenuContributor : IMenuContributor
{ {
public Task ConfigureMenuAsync(MenuConfigurationContext context) public async Task ConfigureMenuAsync(MenuConfigurationContext context)
{ {
if (context.Menu.Name != StandardMenus.Main) if (context.Menu.Name != StandardMenus.Main)
{ {
return Task.CompletedTask; return;
} }
var settingManagementPageOptions = context.ServiceProvider.GetRequiredService<IOptions<SettingManagementPageOptions>>().Value; var settingManagementPageOptions = context.ServiceProvider.GetRequiredService<IOptions<SettingManagementPageOptions>>().Value;
if (!settingManagementPageOptions.Contributors.Any()) var settingPageCreationContext = new SettingPageCreationContext(context.ServiceProvider);
if (
!settingManagementPageOptions.Contributors.Any()
|| !(await CheckAnyOfPagePermissionsGranted(settingManagementPageOptions, settingPageCreationContext))
)
{ {
return Task.CompletedTask; return;
} }
var l = context.ServiceProvider.GetRequiredService<IStringLocalizer<AbpSettingManagementResource>>(); var l = context.ServiceProvider.GetRequiredService<IStringLocalizer<AbpSettingManagementResource>>();
@ -36,8 +42,21 @@ namespace Volo.Abp.SettingManagement.Web.Navigation
icon: "fa fa-cog" icon: "fa fa-cog"
) )
); );
}
return Task.CompletedTask; private async Task<bool> CheckAnyOfPagePermissionsGranted(
SettingManagementPageOptions settingManagementPageOptions,
SettingPageCreationContext settingPageCreationContext)
{
foreach (var contributor in settingManagementPageOptions.Contributors)
{
if (await contributor.CheckPermissionsAsync(settingPageCreationContext))
{
return true;
}
}
return false;
} }
} }
} }

2
modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/ISettingPageContributor.cs

@ -5,5 +5,7 @@ namespace Volo.Abp.SettingManagement.Web.Pages.SettingManagement
public interface ISettingPageContributor public interface ISettingPageContributor
{ {
Task ConfigureAsync(SettingPageCreationContext context); Task ConfigureAsync(SettingPageCreationContext context);
Task<bool> CheckPermissionsAsync(SettingPageCreationContext context);
} }
} }
Loading…
Cancel
Save