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.Localization;
using Volo.Abp.MultiTenancy; using Volo.Abp.MultiTenancy;
using Volo.Abp.SettingManagement.Localization; using Volo.Abp.SettingManagement.Localization;
@ -10,12 +12,24 @@ namespace Volo.Abp.SettingManagement
public override void Define(IPermissionDefinitionContext context) public override void Define(IPermissionDefinitionContext context)
{ {
var moduleGroup = context.AddGroup(SettingManagementPermissions.GroupName, L("Permission:SettingManagement")); 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) private static LocalizableString L(string name)
{ {
return LocalizableString.Create<AbpSettingManagementResource>(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.AspNetCore.Authorization;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
using Volo.Abp.Features;
using Volo.Abp.MultiTenancy;
using Volo.Abp.SettingManagement.Blazor.Pages.SettingManagement.EmailSettingGroup; using Volo.Abp.SettingManagement.Blazor.Pages.SettingManagement.EmailSettingGroup;
using Volo.Abp.SettingManagement.Localization; using Volo.Abp.SettingManagement.Localization;
@ -33,9 +35,29 @@ namespace Volo.Abp.SettingManagement.Blazor.Settings
private async Task<bool> CheckPermissionsInternalAsync(SettingComponentCreationContext context) private async Task<bool> CheckPermissionsInternalAsync(SettingComponentCreationContext context)
{ {
if (!await CheckFeatureAsync(context))
{
return false;
}
var authorizationService = context.ServiceProvider.GetRequiredService<IAuthorizationService>(); var authorizationService = context.ServiceProvider.GetRequiredService<IAuthorizationService>();
return await authorizationService.IsGrantedAsync(SettingManagementPermissions.Emailing); 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", "DefaultFromDisplayName": "Default from display name",
"Feature:SettingManagementGroup": "Setting Management", "Feature:SettingManagementGroup": "Setting Management",
"Feature:SettingManagementEnable": "Enable 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": "默认显示名称", "DefaultFromDisplayName": "默认显示名称",
"Feature:SettingManagementGroup": "设置管理", "Feature:SettingManagementGroup": "设置管理",
"Feature:SettingManagementEnable": "启用设置管理", "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 namespace Volo.Abp.SettingManagement
{ {
public class SettingManagementFeatureDefinitionProvider: FeatureDefinitionProvider public class SettingManagementFeatureDefinitionProvider : FeatureDefinitionProvider
{ {
public override void Define(IFeatureDefinitionContext context) public override void Define(IFeatureDefinitionContext context)
{ {
var group = context.AddGroup(SettingManagementFeatures.GroupName, var group = context.AddGroup(SettingManagementFeatures.GroupName,
L("Feature:SettingManagementGroup")); L("Feature:SettingManagementGroup"));
group.AddFeature(SettingManagementFeatures.Enable, var settingEnableFeature = group.AddFeature(
SettingManagementFeatures.Enable,
"true", "true",
L("Feature:SettingManagementEnable"), L("Feature:SettingManagementEnable"),
L("Feature:SettingManagementEnableDescription"), L("Feature:SettingManagementEnableDescription"),
new ToggleStringValueType()); new ToggleStringValueType());
settingEnableFeature.CreateChild(
SettingManagementFeatures.AllowTenantsToChangeEmailSettings,
"false",
L("Feature:AllowTenantsToChangeEmailSettings"),
L("AllowTenantsToChangeEmailSettingsDescription"),
new ToggleStringValueType(),
isAvailableToHost: false);
} }
private static LocalizableString L(string name) 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 GroupName = "SettingManagement";
public const string Enable = GroupName + ".Enable"; 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.AspNetCore.Authorization;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
using Volo.Abp.Features;
using Volo.Abp.MultiTenancy;
using Volo.Abp.SettingManagement.Localization; using Volo.Abp.SettingManagement.Localization;
using Volo.Abp.SettingManagement.Web.Pages.SettingManagement; using Volo.Abp.SettingManagement.Web.Pages.SettingManagement;
using Volo.Abp.SettingManagement.Web.Pages.SettingManagement.Components.EmailSettingGroup; 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) private async Task<bool> CheckPermissionsInternalAsync(SettingPageCreationContext context)
{ {
if (!await CheckFeatureAsync(context))
{
return false;
}
var authorizationService = context.ServiceProvider.GetRequiredService<IAuthorizationService>(); var authorizationService = context.ServiceProvider.GetRequiredService<IAuthorizationService>();
return await authorizationService.IsGrantedAsync(SettingManagementPermissions.Emailing); 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