Browse Source

Provide a feature to allow tenants to change email settings

pull/9701/head
liangshiwei 5 years ago
parent
commit
2d55efd78b
  1. 18
      modules/setting-management/src/Volo.Abp.SettingManagement.Application.Contracts/Volo/Abp/SettingManagement/SettingManagementPermissionDefinitionProvider.cs
  2. 22
      modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Settings/EmailingPageContributor.cs
  3. 4
      modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/en.json
  4. 4
      modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hans.json
  5. 13
      modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/SettingManagementFeatureDefinitionProvider.cs
  6. 2
      modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/SettingManagementFeatures.cs
  7. 22
      modules/setting-management/src/Volo.Abp.SettingManagement.Web/Settings/EmailingPageContributor.cs

18
modules/setting-management/src/Volo.Abp.SettingManagement.Application.Contracts/Volo/Abp/SettingManagement/SettingManagementPermissionDefinitionProvider.cs

@ -1,4 +1,6 @@
using Volo.Abp.Authorization.Permissions;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.Features;
using Volo.Abp.Localization;
using Volo.Abp.MultiTenancy;
using Volo.Abp.SettingManagement.Localization;
@ -10,12 +12,24 @@ namespace Volo.Abp.SettingManagement
public override void Define(IPermissionDefinitionContext context)
{
var moduleGroup = context.AddGroup(SettingManagementPermissions.GroupName, L("Permission:SettingManagement"));
moduleGroup.AddPermission(SettingManagementPermissions.Emailing, L("Permission:Emailing"), multiTenancySide: MultiTenancySides.Host);
var emailingPermission = moduleGroup.AddPermission(SettingManagementPermissions.Emailing, L("Permission:Emailing"));
if (IsTenantAvailable(context))
{
emailingPermission.RequireFeatures(SettingManagementFeatures.AllowTenantsToChangeEmailSettings);
}
}
private static LocalizableString L(string name)
{
return LocalizableString.Create<AbpSettingManagementResource>(name);
}
private static bool IsTenantAvailable(IPermissionDefinitionContext context)
{
var currentTenant = context.ServiceProvider.GetRequiredService<ICurrentTenant>();
return currentTenant.IsAvailable;
}
}
}

22
modules/setting-management/src/Volo.Abp.SettingManagement.Blazor/Settings/EmailingPageContributor.cs

@ -2,6 +2,8 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Localization;
using Volo.Abp.Features;
using Volo.Abp.MultiTenancy;
using Volo.Abp.SettingManagement.Blazor.Pages.SettingManagement.EmailSettingGroup;
using Volo.Abp.SettingManagement.Localization;
@ -33,9 +35,29 @@ namespace Volo.Abp.SettingManagement.Blazor.Settings
private async Task<bool> CheckPermissionsInternalAsync(SettingComponentCreationContext context)
{
if (!await CheckFeatureAsync(context))
{
return false;
}
var authorizationService = context.ServiceProvider.GetRequiredService<IAuthorizationService>();
return await authorizationService.IsGrantedAsync(SettingManagementPermissions.Emailing);
}
private async Task<bool> CheckFeatureAsync(SettingComponentCreationContext context)
{
var currentTenant = context.ServiceProvider.GetRequiredService<ICurrentTenant>();
if (!currentTenant.IsAvailable)
{
return true;
}
var featureCheck = context.ServiceProvider.GetRequiredService<IFeatureChecker>();
return await featureCheck.IsEnabledAsync(SettingManagementFeatures.AllowTenantsToChangeEmailSettings);
}
}
}

4
modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/en.json

@ -17,6 +17,8 @@
"DefaultFromDisplayName": "Default from display name",
"Feature:SettingManagementGroup": "Setting Management",
"Feature:SettingManagementEnable": "Enable setting management",
"Feature:SettingManagementEnableDescription": "Enable setting management system in the application."
"Feature:SettingManagementEnableDescription": "Enable setting management system in the application.",
"Feature:AllowTenantsToChangeEmailSettings": "Allow tenants to change email settings.",
"Feature:AllowTenantsToChangeEmailSettingsDescription": "Allow tenants to change email settings."
}
}

4
modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/zh-Hans.json

@ -17,6 +17,8 @@
"DefaultFromDisplayName": "默认显示名称",
"Feature:SettingManagementGroup": "设置管理",
"Feature:SettingManagementEnable": "启用设置管理",
"Feature:SettingManagementEnableDescription": "在应用程序中启用设置管理系统."
"Feature:SettingManagementEnableDescription": "在应用程序中启用设置管理系统.",
"Feature:AllowTenantsToChangeEmailSettings": "允许租户更改邮件设置.",
"Feature:AllowTenantsToChangeEmailSettingsDescription": "允许租户更改邮件设置."
}
}

13
modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/SettingManagementFeatureDefinitionProvider.cs

@ -5,18 +5,27 @@ using Volo.Abp.Validation.StringValues;
namespace Volo.Abp.SettingManagement
{
public class SettingManagementFeatureDefinitionProvider: FeatureDefinitionProvider
public class SettingManagementFeatureDefinitionProvider : FeatureDefinitionProvider
{
public override void Define(IFeatureDefinitionContext context)
{
var group = context.AddGroup(SettingManagementFeatures.GroupName,
L("Feature:SettingManagementGroup"));
group.AddFeature(SettingManagementFeatures.Enable,
var settingEnableFeature = group.AddFeature(
SettingManagementFeatures.Enable,
"true",
L("Feature:SettingManagementEnable"),
L("Feature:SettingManagementEnableDescription"),
new ToggleStringValueType());
settingEnableFeature.CreateChild(
SettingManagementFeatures.AllowTenantsToChangeEmailSettings,
"false",
L("Feature:AllowTenantsToChangeEmailSettings"),
L("AllowTenantsToChangeEmailSettingsDescription"),
new ToggleStringValueType(),
isAvailableToHost: false);
}
private static LocalizableString L(string name)

2
modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/SettingManagementFeatures.cs

@ -5,5 +5,7 @@
public const string GroupName = "SettingManagement";
public const string Enable = GroupName + ".Enable";
public const string AllowTenantsToChangeEmailSettings = GroupName + ".AllowTenantsToChangeEmailSettings";
}
}

22
modules/setting-management/src/Volo.Abp.SettingManagement.Web/Settings/EmailingPageContributor.cs

@ -2,6 +2,8 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Localization;
using Volo.Abp.Features;
using Volo.Abp.MultiTenancy;
using Volo.Abp.SettingManagement.Localization;
using Volo.Abp.SettingManagement.Web.Pages.SettingManagement;
using Volo.Abp.SettingManagement.Web.Pages.SettingManagement.Components.EmailSettingGroup;
@ -34,9 +36,29 @@ namespace Volo.Abp.SettingManagement.Web.Settings
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);
}
private async Task<bool> CheckFeatureAsync(SettingPageCreationContext context)
{
var currentTenant = context.ServiceProvider.GetRequiredService<ICurrentTenant>();
if (!currentTenant.IsAvailable)
{
return true;
}
var featureCheck = context.ServiceProvider.GetRequiredService<IFeatureChecker>();
return await featureCheck.IsEnabledAsync(SettingManagementFeatures.AllowTenantsToChangeEmailSettings);
}
}
}

Loading…
Cancel
Save