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"
                    )
                );
        }
Example #3
0
    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);
    }
Example #4
0
        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));
            }
        }
Example #5
0
    public virtual async Task <IActionResult> OnGetAsync()
    {
        SettingPageCreationContext = new SettingPageCreationContext(ServiceProvider);

        foreach (var contributor in Options.Contributors)
        {
            await contributor.ConfigureAsync(SettingPageCreationContext);
        }

        return(Page());
    }
Example #6
0
    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));
    }
Example #7
0
    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);
    }
Example #8
0
    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));
            }
        }
Example #11
0
 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)
                 )
             );
     }
 }
Example #12
0
    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);
    }
Example #13
0
    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)
                );
        }
Example #15
0
 public abstract Task ConfigureAsync(SettingPageCreationContext context);
 public async Task <bool> CheckPermissionsAsync(SettingPageCreationContext context)
 {
     return(await Task.FromResult(true));
 }
Example #17
0
 public async Task <bool> CheckPermissionsAsync(SettingPageCreationContext context)
 {
     return(await CheckPermissionsInternalAsync(context));
 }
Example #18
0
        public async Task <bool> CheckPermissionsAsync(SettingPageCreationContext context)
        {
            var authorizationService = context.ServiceProvider.GetRequiredService <IAuthorizationService>();

            return(await authorizationService.IsGrantedAsync(SettingUiPermissions.Global));
        }
Example #19
0
 public virtual Task <bool> CheckPermissionsAsync(SettingPageCreationContext context)
 {
     return(Task.FromResult(true));
 }
Example #20
0
        public Task <bool> CheckPermissionsAsync(SettingPageCreationContext context)
        {
            var currentUser = context.ServiceProvider.GetRequiredService <ICurrentUser>();

            return(Task.FromResult(currentUser.IsAuthenticated));
        }