From f2c545c556fc422f58bb333124cb9d74101426c3 Mon Sep 17 00:00:00 2001 From: enisn Date: Tue, 16 Mar 2021 15:55:34 +0300 Subject: [PATCH 1/5] CmsKit - Add CmsUserFeature --- .../CmsKit/GlobalFeatures/CmsUserFeature.cs | 15 +++++++++++++++ .../CmsKit/GlobalFeatures/CommentsFeature.cs | 11 +++++++++++ .../CmsKit/GlobalFeatures/ContentsFeature.cs | 17 ----------------- .../GlobalFeatures/GlobalCmsKitFeatures.cs | 6 +++--- .../Volo/CmsKit/GlobalFeatures/MediaFeature.cs | 11 +++++++++++ .../Volo/CmsKit/GlobalFeatures/PagesFeature.cs | 8 ++++---- .../CmsKit/GlobalFeatures/RatingsFeature.cs | 13 ++++++++++++- .../CmsKit/GlobalFeatures/ReactionsFeature.cs | 11 +++++++++++ .../Volo/CmsKit/GlobalFeatures/TagsFeature.cs | 11 +++++++++++ 9 files changed, 78 insertions(+), 25 deletions(-) create mode 100644 modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/CmsUserFeature.cs delete mode 100644 modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/ContentsFeature.cs 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..25fe85cd8e --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/GlobalFeatures/CmsUserFeature.cs @@ -0,0 +1,15 @@ +using JetBrains.Annotations; +using Volo.Abp.GlobalFeatures; + +namespace Volo.CmsKit.GlobalFeatures +{ + [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 From 457c2b6c997f4c9063ff387828eeb23bbbf21436 Mon Sep 17 00:00:00 2001 From: enisn Date: Tue, 16 Mar 2021 15:56:16 +0300 Subject: [PATCH 2/5] CmsKit - Implement CmsUserFeature dependent checks --- .../Volo/CmsKit/Users/CmsUserSynchronizer.cs | 10 +++++++++- .../CmsKitDbContextModelCreatingExtensions.cs | 18 ++++++++---------- 2 files changed, 17 insertions(+), 11 deletions(-) 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 => { From 40bfc5640e2f805c8ea01972bf88d6561adc8868 Mon Sep 17 00:00:00 2001 From: enisn Date: Tue, 16 Mar 2021 15:59:05 +0300 Subject: [PATCH 3/5] CmsKit - Remove Content Permissions --- .../CmsKitAdminPermissionDefinitionProvider.cs | 8 -------- 1 file changed, 8 deletions(-) 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")); From 9eebaf4d4b2066635ae47fed4631c37dd6974aa1 Mon Sep 17 00:00:00 2001 From: enisn Date: Tue, 16 Mar 2021 16:06:12 +0300 Subject: [PATCH 4/5] CmsKit - Fix broken tests according to ContentsFeature --- .../Features/GlobalCmsKitFeatures_Tests.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) 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(); } } From e27dcfc0da4f5d4ad30c3a3258ff373c2bae1523 Mon Sep 17 00:00:00 2001 From: enisn Date: Tue, 16 Mar 2021 16:06:41 +0300 Subject: [PATCH 5/5] CmsKit - Add summary for CmsUserFeature --- .../Volo/CmsKit/GlobalFeatures/CmsUserFeature.cs | 3 +++ 1 file changed, 3 insertions(+) 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 index 25fe85cd8e..67d7047a8b 100644 --- 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 @@ -3,6 +3,9 @@ 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 {