diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Permissions/CmsKitAdminPermissionDefinitionProvider.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Permissions/CmsKitAdminPermissionDefinitionProvider.cs index 284ce15827..3df0e205d5 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Permissions/CmsKitAdminPermissionDefinitionProvider.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Permissions/CmsKitAdminPermissionDefinitionProvider.cs @@ -19,14 +19,6 @@ namespace Volo.CmsKit.Permissions contentGroup.AddChild(CmsKitAdminPermissions.Comments.Delete, L("Permission:Comments.Delete")); } - if (GlobalFeatureManager.Instance.IsEnabled()) - { - var contentGroup = cmsGroup.AddPermission(CmsKitAdminPermissions.Contents.Default, L("Permission:Contents")); - contentGroup.AddChild(CmsKitAdminPermissions.Contents.Create, L("Permission:Contents.Create")); - contentGroup.AddChild(CmsKitAdminPermissions.Contents.Update, L("Permission:Contents.Update")); - contentGroup.AddChild(CmsKitAdminPermissions.Contents.Delete, L("Permission:Contents.Delete")); - } - if (GlobalFeatureManager.Instance.IsEnabled()) { var tagGroup = cmsGroup.AddPermission(CmsKitAdminPermissions.Tags.Default, L("Permission:TagManagement")); diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/CmsUserFeature.cs b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/CmsUserFeature.cs new file mode 100644 index 0000000000..67d7047a8b --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/CmsUserFeature.cs @@ -0,0 +1,18 @@ +using JetBrains.Annotations; +using Volo.Abp.GlobalFeatures; + +namespace Volo.CmsKit.GlobalFeatures +{ + /// + /// All CmsKit Features are dependent this feature. Do not disable this manually. + /// + [GlobalFeatureName(Name)] + public class CmsUserFeature : GlobalFeature + { + public const string Name = "CmsKit.User"; + + internal CmsUserFeature([NotNull] GlobalModuleFeatures module) : base(module) + { + } + } +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/CommentsFeature.cs b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/CommentsFeature.cs index a812bd5388..0d2499aa48 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/CommentsFeature.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/CommentsFeature.cs @@ -14,5 +14,16 @@ namespace Volo.CmsKit.GlobalFeatures { } + + public override void Enable() + { + var userFeature = FeatureManager.Modules.CmsKit().User; + if (!userFeature.IsEnabled) + { + userFeature.Enable(); + } + + base.Enable(); + } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/ContentsFeature.cs b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/ContentsFeature.cs deleted file mode 100644 index 6514a9c7b8..0000000000 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/ContentsFeature.cs +++ /dev/null @@ -1,17 +0,0 @@ -using JetBrains.Annotations; -using Volo.Abp.GlobalFeatures; - -namespace Volo.CmsKit.GlobalFeatures -{ - [GlobalFeatureName(Name)] - public class ContentsFeature : GlobalFeature - { - public const string Name = "CmsKit.Contents"; - - internal ContentsFeature( - [NotNull] GlobalCmsKitFeatures cmsKit - ) : base(cmsKit) - { - } - } -} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/GlobalCmsKitFeatures.cs b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/GlobalCmsKitFeatures.cs index 91c319f701..adfe84228e 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/GlobalCmsKitFeatures.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/GlobalCmsKitFeatures.cs @@ -17,10 +17,10 @@ namespace Volo.CmsKit.GlobalFeatures public TagsFeature Tags => GetFeature(); - public ContentsFeature Contents => GetFeature(); - public PagesFeature Pages => GetFeature(); + public CmsUserFeature User => GetFeature(); + public GlobalCmsKitFeatures([NotNull] GlobalFeatureManager featureManager) : base(featureManager) { @@ -29,9 +29,9 @@ namespace Volo.CmsKit.GlobalFeatures AddFeature(new CommentsFeature(this)); AddFeature(new RatingsFeature(this)); AddFeature(new TagsFeature(this)); - AddFeature(new ContentsFeature(this)); AddFeature(new PagesFeature(this)); AddFeature(new BlogsFeature(this)); + AddFeature(new CmsUserFeature(this)); } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/MediaFeature.cs b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/MediaFeature.cs index d40cd829b9..9714df8c73 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/MediaFeature.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/MediaFeature.cs @@ -14,5 +14,16 @@ namespace Volo.CmsKit.GlobalFeatures { } + + public override void Enable() + { + var userFeature = FeatureManager.Modules.CmsKit().User; + if (!userFeature.IsEnabled) + { + userFeature.Enable(); + } + + base.Enable(); + } } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/PagesFeature.cs b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/PagesFeature.cs index c41e217999..86977590ee 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/PagesFeature.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/PagesFeature.cs @@ -17,12 +17,12 @@ namespace Volo.CmsKit.GlobalFeatures public override void Enable() { - var contentsFeature = FeatureManager.Modules.CmsKit().Contents; - if (!contentsFeature.IsEnabled) + var userFeature = FeatureManager.Modules.CmsKit().User; + if (!userFeature.IsEnabled) { - contentsFeature.Enable(); + userFeature.Enable(); } - + base.Enable(); } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/RatingsFeature.cs b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/RatingsFeature.cs index b982d6cebb..56796c6422 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/RatingsFeature.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/RatingsFeature.cs @@ -12,7 +12,18 @@ namespace Volo.CmsKit.GlobalFeatures [NotNull] GlobalCmsKitFeatures cmsKit ) : base(cmsKit) { - + + } + + public override void Enable() + { + var userFeature = FeatureManager.Modules.CmsKit().User; + if (!userFeature.IsEnabled) + { + userFeature.Enable(); + } + + base.Enable(); } } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/ReactionsFeature.cs b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/ReactionsFeature.cs index ad9a60b64d..fce32d548e 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/ReactionsFeature.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/ReactionsFeature.cs @@ -13,5 +13,16 @@ namespace Volo.CmsKit.GlobalFeatures ) : base(cmsKit) { } + + public override void Enable() + { + var userFeature = FeatureManager.Modules.CmsKit().User; + if (!userFeature.IsEnabled) + { + userFeature.Enable(); + } + + base.Enable(); + } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/TagsFeature.cs b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/TagsFeature.cs index ff20c130fd..1e8fde3570 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/TagsFeature.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/TagsFeature.cs @@ -13,5 +13,16 @@ namespace Volo.CmsKit.GlobalFeatures ) : base(cmsKit) { } + + public override void Enable() + { + var userFeature = FeatureManager.Modules.CmsKit().User; + if (!userFeature.IsEnabled) + { + userFeature.Enable(); + } + + base.Enable(); + } } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Users/CmsUserSynchronizer.cs b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Users/CmsUserSynchronizer.cs index 6fc785ad4a..84425c4d16 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Users/CmsUserSynchronizer.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Users/CmsUserSynchronizer.cs @@ -1,8 +1,11 @@ -using System.Threading.Tasks; +using System.Linq; +using System.Threading.Tasks; using Volo.Abp.DependencyInjection; using Volo.Abp.Domain.Entities.Events.Distributed; using Volo.Abp.EventBus.Distributed; +using Volo.Abp.GlobalFeatures; using Volo.Abp.Users; +using Volo.CmsKit.GlobalFeatures; namespace Volo.CmsKit.Users { @@ -24,6 +27,11 @@ namespace Volo.CmsKit.Users public virtual async Task HandleEventAsync(EntityUpdatedEto eventData) { + if (!GlobalFeatureManager.Instance.IsEnabled()) + { + return; + } + var user = await UserRepository.FindAsync(eventData.Entity.Id); if (user == null) { diff --git a/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/EntityFrameworkCore/CmsKitDbContextModelCreatingExtensions.cs b/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/EntityFrameworkCore/CmsKitDbContextModelCreatingExtensions.cs index 57a8e062fc..32fbfbadd6 100644 --- a/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/EntityFrameworkCore/CmsKitDbContextModelCreatingExtensions.cs +++ b/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/EntityFrameworkCore/CmsKitDbContextModelCreatingExtensions.cs @@ -1,19 +1,18 @@ -using System; -using System.Linq; -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; +using System; using Volo.Abp; using Volo.Abp.EntityFrameworkCore.Modeling; using Volo.Abp.GlobalFeatures; -using Volo.CmsKit.Comments; -using Volo.CmsKit.Reactions; -using Volo.CmsKit.Users; using Volo.Abp.Users.EntityFrameworkCore; +using Volo.CmsKit.Blogs; +using Volo.CmsKit.Comments; using Volo.CmsKit.GlobalFeatures; +using Volo.CmsKit.MediaDescriptors; using Volo.CmsKit.Pages; using Volo.CmsKit.Ratings; +using Volo.CmsKit.Reactions; using Volo.CmsKit.Tags; -using Volo.CmsKit.Blogs; -using Volo.CmsKit.MediaDescriptors; +using Volo.CmsKit.Users; namespace Volo.CmsKit.EntityFrameworkCore { @@ -32,8 +31,7 @@ namespace Volo.CmsKit.EntityFrameworkCore optionsAction?.Invoke(options); - //TODO: What if only CMSKit Pro features are enabled? This is kinda workaround for now - if (GlobalFeatureManager.Instance.Modules.CmsKit().GetFeatures().Any(f => f.IsEnabled)) + if (!GlobalFeatureManager.Instance.IsEnabled()) { builder.Entity(b => { diff --git a/modules/cms-kit/test/Volo.CmsKit.Domain.Tests/Features/GlobalCmsKitFeatures_Tests.cs b/modules/cms-kit/test/Volo.CmsKit.Domain.Tests/Features/GlobalCmsKitFeatures_Tests.cs index 97e53daeb8..6fcdd52a0f 100644 --- a/modules/cms-kit/test/Volo.CmsKit.Domain.Tests/Features/GlobalCmsKitFeatures_Tests.cs +++ b/modules/cms-kit/test/Volo.CmsKit.Domain.Tests/Features/GlobalCmsKitFeatures_Tests.cs @@ -18,12 +18,11 @@ namespace Volo.CmsKit.Features public void Page_Feature_Should_Enable_Dependent_Features() { _cmsKitFeatures.DisableAll(); - _cmsKitFeatures.Contents.IsEnabled.ShouldBeFalse(); + _cmsKitFeatures.User.IsEnabled.ShouldBeFalse(); _cmsKitFeatures.Pages.IsEnabled.ShouldBeFalse(); _cmsKitFeatures.Pages.Enable(); - - _cmsKitFeatures.Contents.IsEnabled.ShouldBeTrue(); + _cmsKitFeatures.User.IsEnabled.ShouldBeTrue(); _cmsKitFeatures.Pages.IsEnabled.ShouldBeTrue(); } }