From a6fe25595d5c07aacf358bb44e716b0030b0d5b0 Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Wed, 20 Sep 2023 09:52:47 +0300 Subject: [PATCH] Refactor endpoints & change middleware usage --- .../CmsKitWebUnifiedModule.cs | 22 ++++++++++++++++- .../Volo/CmsKit/Pages/PageCacheKey.cs | 2 +- .../ClientProxies/cms-kit-generate-proxy.json | 14 +++++------ .../generate-proxy.ps1 | 1 + .../Public/Pages/PagesPublicController.cs | 9 +++---- .../CmsKitPagesMiddlewareExtensions.cs | 24 ++++++++++++++++++- .../CmsKitPublicWebModule.cs | 11 --------- 7 files changed, 58 insertions(+), 25 deletions(-) create mode 100644 modules/cms-kit/src/Volo.CmsKit.Public.HttpApi.Client/generate-proxy.ps1 diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs index 0ab0ae4d6d..673f458343 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs @@ -36,6 +36,11 @@ using Volo.CmsKit.Reactions; using Volo.CmsKit.Tags; using Volo.CmsKit.Web; using Volo.CmsKit.Web.Contents; +using Microsoft.AspNetCore.Routing; +using Microsoft.AspNetCore.Mvc.Routing; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Volo.Abp.DependencyInjection; #if EntityFrameworkCore using Volo.Abp.SettingManagement.EntityFrameworkCore; @@ -54,7 +59,6 @@ using Volo.Abp.TenantManagement.MongoDB; using Volo.Abp.Identity.MongoDB; using Volo.Abp.PermissionManagement.MongoDB; using Volo.Abp.FeatureManagement.MongoDB; -using Volo.Abp.MongoDB; using Volo.Abp.BlobStoring.Database.MongoDB; using Volo.Abp.AuditLogging.MongoDB; using Volo.CmsKit.MongoDB; @@ -247,6 +251,7 @@ public class CmsKitWebUnifiedModule : AbpModule app.UseHttpsRedirection(); app.UseStaticFiles(); + app.UseCmsKitPagesMiddleware(); app.UseRouting(); app.UseAuthentication(); @@ -266,6 +271,7 @@ public class CmsKitWebUnifiedModule : AbpModule app.UseAuditing(); app.UseAbpSerilogEnrichers(); + app.UseConfiguredEndpoints(); using (var scope = context.ServiceProvider.CreateScope()) @@ -279,3 +285,17 @@ public class CmsKitWebUnifiedModule : AbpModule } } } + +public class CmsKitPageRouteValueTransformer : DynamicRouteValueTransformer, ITransientDependency +{ + public override ValueTask TransformAsync(HttpContext httpContext, RouteValueDictionary values) + { + if (values.TryGetValue("slug", out var slug)) + { + values["page"] = "/Pages/Public/CmsKit/Pages/Index"; + values["slug"] = slug; + } + + return new ValueTask(values); + } +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Pages/PageCacheKey.cs b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Pages/PageCacheKey.cs index e271af9e28..97891c4f6f 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Pages/PageCacheKey.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Pages/PageCacheKey.cs @@ -10,6 +10,6 @@ public class PageCacheKey public override string ToString() { - return $"Page_{Slug}"; + return $"CmsPage_{Slug}"; } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi.Client/ClientProxies/cms-kit-generate-proxy.json b/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi.Client/ClientProxies/cms-kit-generate-proxy.json index bc020e6768..0d2ba6e408 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi.Client/ClientProxies/cms-kit-generate-proxy.json +++ b/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi.Client/ClientProxies/cms-kit-generate-proxy.json @@ -862,7 +862,7 @@ "uniqueName": "FindBySlugAsyncBySlug", "name": "FindBySlugAsync", "httpMethod": "GET", - "url": "api/cms-kit-public/pages/{slug}", + "url": "api/cms-kit-public/pages/by-slug", "supportedVersions": [], "parametersOnMethod": [ { @@ -883,8 +883,8 @@ "typeSimple": "string", "isOptional": false, "defaultValue": null, - "constraintTypes": [], - "bindingSourceId": "Path", + "constraintTypes": null, + "bindingSourceId": "Query", "descriptorName": "" } ], @@ -899,7 +899,7 @@ "uniqueName": "FindDefaultHomePageAsync", "name": "FindDefaultHomePageAsync", "httpMethod": "GET", - "url": "api/cms-kit-public/pages", + "url": "api/cms-kit-public/pages/home", "supportedVersions": [], "parametersOnMethod": [], "parameters": [], @@ -914,7 +914,7 @@ "uniqueName": "DoesSlugExistAsyncBySlug", "name": "DoesSlugExistAsync", "httpMethod": "GET", - "url": "api/cms-kit-public/pages/{slug}/exist", + "url": "api/cms-kit-public/pages/check", "supportedVersions": [], "parametersOnMethod": [ { @@ -935,8 +935,8 @@ "typeSimple": "string", "isOptional": false, "defaultValue": null, - "constraintTypes": [], - "bindingSourceId": "Path", + "constraintTypes": null, + "bindingSourceId": "Query", "descriptorName": "" } ], diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi.Client/generate-proxy.ps1 b/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi.Client/generate-proxy.ps1 new file mode 100644 index 0000000000..8a407d2af7 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi.Client/generate-proxy.ps1 @@ -0,0 +1 @@ +abp generate-proxy -t csharp -url https://localhost:44349 -m cms-kit --without-contracts \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo/CmsKit/Public/Pages/PagesPublicController.cs b/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo/CmsKit/Public/Pages/PagesPublicController.cs index de368f4c7b..15b41bad54 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo/CmsKit/Public/Pages/PagesPublicController.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo/CmsKit/Public/Pages/PagesPublicController.cs @@ -25,21 +25,22 @@ public class PagesPublicController : CmsKitPublicControllerBase, IPagePublicAppS } [HttpGet] - [Route("{slug}")] - public virtual Task FindBySlugAsync(string slug) + [Route("by-slug")] + public virtual Task FindBySlugAsync([FromQuery]string slug) { return PageAppService.FindBySlugAsync(slug); } [HttpGet] + [Route("home")] public virtual Task FindDefaultHomePageAsync() { return PageAppService.FindDefaultHomePageAsync(); } [HttpGet] - [Route("{slug}/exist")] - public virtual Task DoesSlugExistAsync([NotNull] string slug) + [Route("check")] + public virtual Task DoesSlugExistAsync([NotNull][FromQuery] string slug) { return PageAppService.DoesSlugExistAsync(slug); } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/CmsKitPagesMiddlewareExtensions.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/CmsKitPagesMiddlewareExtensions.cs index 3ab043dc78..b70b605371 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/CmsKitPagesMiddlewareExtensions.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/CmsKitPagesMiddlewareExtensions.cs @@ -1,4 +1,6 @@ -using Microsoft.AspNetCore.Builder; +using System; +using System.Collections.Generic; +using Microsoft.AspNetCore.Builder; using Volo.Abp.GlobalFeatures; using Volo.CmsKit.GlobalFeatures; @@ -6,13 +8,33 @@ namespace Volo.CmsKit.Public.Web; public static class CmsKitPagesMiddlewareExtensions { + private const string UseCmsKitHomePageMiddlewareKey = "UseCmsKitHomePageMiddleware"; + + [Obsolete("Use UseCmsKitPagesMiddleware instead.")] public static IApplicationBuilder UseCmsKitHomePageMiddleware(this IApplicationBuilder builder) { + if (!GlobalFeatureManager.Instance.IsEnabled()) + { + return builder; + } + + builder.Properties[UseCmsKitHomePageMiddlewareKey] = true; return builder.UseMiddleware(); } public static IApplicationBuilder UseCmsKitPagesMiddleware(this IApplicationBuilder builder) { + if (!GlobalFeatureManager.Instance.IsEnabled()) + { + return builder; + } + + if (!builder.Properties.ContainsKey(UseCmsKitHomePageMiddlewareKey)) + { + builder.Properties[UseCmsKitHomePageMiddlewareKey] = true; + builder.UseMiddleware(); + } + return builder.UseMiddleware(); } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/CmsKitPublicWebModule.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/CmsKitPublicWebModule.cs index 97e1dcd4d4..66a905f4fa 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/CmsKitPublicWebModule.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/CmsKitPublicWebModule.cs @@ -104,15 +104,4 @@ public class CmsKitPublicWebModule : AbpModule } } - - public override void OnApplicationInitialization(ApplicationInitializationContext context) - { - var app = context.GetApplicationBuilder(); - - if (GlobalFeatureManager.Instance.IsEnabled()) - { - app.UseCmsKitHomePageMiddleware(); - app.UseCmsKitPagesMiddleware(); - } - } }