public async Task ConfigureAsync(SettingPageCreationContext context) { context.Groups.Add(new SettingPageGroup(Guid.NewGuid().ToString(), "设置1", typeof(SettingPage1ViewComponent))); context.Groups.Add(new SettingPageGroup(Guid.NewGuid().ToString(), "设置2", typeof(SettingPage2ViewComponent))); await Task.CompletedTask; }
public async Task ConfigureMenuAsync(MenuConfigurationContext context) { if (context.Menu.Name != StandardMenus.Main) { return; } var settingManagementPageOptions = context.ServiceProvider.GetRequiredService <IOptions <SettingManagementPageOptions> >().Value; var settingPageCreationContext = new SettingPageCreationContext(context.ServiceProvider); if ( !settingManagementPageOptions.Contributors.Any() || !(await CheckAnyOfPagePermissionsGranted(settingManagementPageOptions, settingPageCreationContext)) ) { return; } var l = context.ServiceProvider.GetRequiredService <IStringLocalizer <AbpSettingManagementResource> >(); context.Menu .GetAdministration() .AddItem( new ApplicationMenuItem( SettingManagementMenuNames.GroupName, l["Settings"], "/SettingManagement", icon: "fa fa-cog" ) ); }
protected virtual async Task <List <ISettingPageContributor> > GetAvailableContributorsInternalAsync() { var contributors = ServiceProvider.GetRequiredService <IOptions <SettingManagementPageOptions> >().Value.Contributors; var contributorBases = contributors.Where(x => x is SettingPageContributorBase).Cast <SettingPageContributorBase>().ToList(); var permissions = new HashSet <string>(); permissions.AddIfNotContains(contributorBases.SelectMany(x => x.GetRequiredPermissions())); var featureChecker = ServiceProvider.GetRequiredService <IFeatureChecker>(); var permissionChecker = ServiceProvider.GetRequiredService <IPermissionChecker>(); var grantResult = await permissionChecker.IsGrantedAsync(permissions.ToArray()); var availableContributors = new List <ISettingPageContributor>(); foreach (var contributor in contributorBases) { var available = true; var requiredFeatures = contributor.GetRequiredFeatures(); if (requiredFeatures.Any() && !await featureChecker.IsEnabledAsync(true, requiredFeatures.ToArray())) { available = false; } if (available) { var requiredTenantSideFeatures = contributor.GetRequiredFeatures(MultiTenancySides.Tenant); if (requiredTenantSideFeatures.Any() && !await featureChecker.IsEnabledAsync(true, requiredTenantSideFeatures.ToArray())) { available = false; } } if (available) { available = contributor.GetRequiredPermissions().All(x => grantResult.Result.ContainsKey(x) && grantResult.Result[x] == PermissionGrantResult.Granted); } if (available) { availableContributors.Add(contributor); } } 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); }
public async Task ConfigureAsync(SettingPageCreationContext context) { var settingUiAppService = context.ServiceProvider.GetService <ISettingUiAppService>(); foreach (var grp in await settingUiAppService.GroupSettingDefinitions()) { context.Groups.Add(new SettingPageGroup(grp.GroupName, grp.GroupDisplayName, typeof(SettingViewComponent), grp)); } }
public virtual async Task <IActionResult> OnGetAsync() { SettingPageCreationContext = new SettingPageCreationContext(ServiceProvider); foreach (var contributor in Options.Contributors) { await contributor.ConfigureAsync(SettingPageCreationContext); } return(Page()); }
private async Task <bool> CheckPermissionsInternalAsync(SettingPageCreationContext context) { if (!await CheckFeatureAsync(context)) { return(false); } var authorizationService = context.ServiceProvider.GetRequiredService <IAuthorizationService>(); return(await authorizationService.IsGrantedAsync(SettingManagementPermissions.Emailing)); }
public virtual async Task <SettingPageCreationContext> ConfigureAsync() { var contributors = CachedAvailableContributors.GetOrAdd(nameof(SettingPageContributorManager), await GetAvailableContributorsInternalAsync()); var context = new SettingPageCreationContext(ServiceProvider); foreach (var contributor in contributors) { await contributor.ConfigureAsync(context); } return(context); }
public override Task ConfigureAsync(SettingPageCreationContext context) { var l = context.ServiceProvider.GetRequiredService <IStringLocalizer <AbpSettingManagementResource> >(); context.Groups.Add( new SettingPageGroup( "Volo.Abp.EmailSetting", l["Menu:Emailing"], typeof(EmailSettingGroupViewComponent) ) ); return(Task.CompletedTask); }
protected virtual async Task <bool> CheckAnyOfPagePermissionsGranted( SettingManagementPageOptions settingManagementPageOptions, SettingPageCreationContext settingPageCreationContext) { foreach (var contributor in settingManagementPageOptions.Contributors) { if (await contributor.CheckPermissionsAsync(settingPageCreationContext)) { return(true); } } return(false); }
public async Task ConfigureAsync(SettingPageCreationContext context) { if (!await CheckPermissionsAsync(context)) { return; } var settingUiAppService = context.ServiceProvider.GetRequiredService <ISettingUiAppService>(); foreach (var grp in await settingUiAppService.GroupSettingDefinitionsAsync()) { context.Groups.Add(new SettingPageGroup(grp.GroupName, grp.GroupDisplayName, typeof(SettingViewComponent), grp)); } }
public async Task ConfigureAsync(SettingPageCreationContext context) { if (await CheckPermissionsAsync(context)) { var l = context.ServiceProvider.GetRequiredService <IStringLocalizer <AbpQa263DemoResource> >(); context.Groups.Add( new SettingPageGroup( "Demo.Setting", "DemoSetting", typeof(DemoSettingGroupViewComponent) ) ); } }
private async Task <bool> CheckFeatureAsync(SettingPageCreationContext context) { var featureCheck = context.ServiceProvider.GetRequiredService <IFeatureChecker>(); if (!await featureCheck.IsEnabledAsync(SettingManagementFeatures.Enable)) { return(false); } if (context.ServiceProvider.GetRequiredService <ICurrentTenant>().IsAvailable) { return(await featureCheck.IsEnabledAsync(SettingManagementFeatures.AllowTenantsToChangeEmailSettings)); } return(true); }
public async Task ConfigureAsync(SettingPageCreationContext context) { if (!await CheckPermissionsInternalAsync(context)) { return; } var l = context.ServiceProvider.GetRequiredService <IStringLocalizer <AbpSettingManagementResource> >(); context.Groups.Add( new SettingPageGroup( "Volo.Abp.EmailSetting", l["Menu:Emailing"], typeof(EmailSettingGroupViewComponent) ) ); }
public virtual async Task ConfigureMenuAsync(MenuConfigurationContext context) { if (context.Menu.Name != StandardMenus.Main) { return; } if (context.Menu.FindMenuItem(SettingManagementMenuNames.GroupName) != null) { /* This may happen if blazor server UI is being used in the same application. * In this case, we don't add the MVC setting management UI. */ return; } var settingManagementPageOptions = context.ServiceProvider.GetRequiredService <IOptions <SettingManagementPageOptions> >().Value; var settingPageCreationContext = new SettingPageCreationContext(context.ServiceProvider); if (!settingManagementPageOptions.Contributors.Any() || !(await CheckAnyOfPagePermissionsGranted(settingManagementPageOptions, settingPageCreationContext))) { return; } var l = context.GetLocalizer <AbpSettingManagementResource>(); context.Menu .GetAdministration() .AddItem( new ApplicationMenuItem( SettingManagementMenuNames.GroupName, l["Settings"], "~/SettingManagement", icon: "fa fa-cog" ).RequireFeatures(SettingManagementFeatures.Enable) ); }
public abstract Task ConfigureAsync(SettingPageCreationContext context);
public async Task <bool> CheckPermissionsAsync(SettingPageCreationContext context) { return(await Task.FromResult(true)); }
public async Task <bool> CheckPermissionsAsync(SettingPageCreationContext context) { return(await CheckPermissionsInternalAsync(context)); }
public async Task <bool> CheckPermissionsAsync(SettingPageCreationContext context) { var authorizationService = context.ServiceProvider.GetRequiredService <IAuthorizationService>(); return(await authorizationService.IsGrantedAsync(SettingUiPermissions.Global)); }
public virtual Task <bool> CheckPermissionsAsync(SettingPageCreationContext context) { return(Task.FromResult(true)); }
public Task <bool> CheckPermissionsAsync(SettingPageCreationContext context) { var currentUser = context.ServiceProvider.GetRequiredService <ICurrentUser>(); return(Task.FromResult(currentUser.IsAuthenticated)); }