Merge pull request #1025 from abpframework/Setting-Menu-Invisible

Resolves #958: Setting management menu should be invisible if current user has no permission to see any tab
pull/1078/head
Halil İbrahim Kalkan 7 years ago committed by GitHub
commit 270ada269f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,4 +1,5 @@
using Microsoft.Extensions.DependencyInjection;
using System;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Localization;
using Microsoft.Extensions.Options;
using System.Linq;
@ -11,17 +12,22 @@ namespace Volo.Abp.SettingManagement.Web.Navigation
{
public class SettingManagementMainMenuContributor : IMenuContributor
{
public Task ConfigureMenuAsync(MenuConfigurationContext context)
public async Task ConfigureMenuAsync(MenuConfigurationContext context)
{
if (context.Menu.Name != StandardMenus.Main)
{
return Task.CompletedTask;
return;
}
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>>();
@ -36,8 +42,21 @@ namespace Volo.Abp.SettingManagement.Web.Navigation
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;
}
}
}

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