Browse Source

Refactor endpoints & change middleware usage

pull/17642/head
Enis Necipoglu 3 years ago
parent
commit
a6fe25595d
No known key found for this signature in database GPG Key ID: 1EC55E13241E1680
  1. 22
      modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs
  2. 2
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Pages/PageCacheKey.cs
  3. 14
      modules/cms-kit/src/Volo.CmsKit.Public.HttpApi.Client/ClientProxies/cms-kit-generate-proxy.json
  4. 1
      modules/cms-kit/src/Volo.CmsKit.Public.HttpApi.Client/generate-proxy.ps1
  5. 9
      modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo/CmsKit/Public/Pages/PagesPublicController.cs
  6. 24
      modules/cms-kit/src/Volo.CmsKit.Public.Web/CmsKitPagesMiddlewareExtensions.cs
  7. 11
      modules/cms-kit/src/Volo.CmsKit.Public.Web/CmsKitPublicWebModule.cs

22
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.Tags;
using Volo.CmsKit.Web; using Volo.CmsKit.Web;
using Volo.CmsKit.Web.Contents; 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 #if EntityFrameworkCore
using Volo.Abp.SettingManagement.EntityFrameworkCore; using Volo.Abp.SettingManagement.EntityFrameworkCore;
@ -54,7 +59,6 @@ using Volo.Abp.TenantManagement.MongoDB;
using Volo.Abp.Identity.MongoDB; using Volo.Abp.Identity.MongoDB;
using Volo.Abp.PermissionManagement.MongoDB; using Volo.Abp.PermissionManagement.MongoDB;
using Volo.Abp.FeatureManagement.MongoDB; using Volo.Abp.FeatureManagement.MongoDB;
using Volo.Abp.MongoDB;
using Volo.Abp.BlobStoring.Database.MongoDB; using Volo.Abp.BlobStoring.Database.MongoDB;
using Volo.Abp.AuditLogging.MongoDB; using Volo.Abp.AuditLogging.MongoDB;
using Volo.CmsKit.MongoDB; using Volo.CmsKit.MongoDB;
@ -247,6 +251,7 @@ public class CmsKitWebUnifiedModule : AbpModule
app.UseHttpsRedirection(); app.UseHttpsRedirection();
app.UseStaticFiles(); app.UseStaticFiles();
app.UseCmsKitPagesMiddleware();
app.UseRouting(); app.UseRouting();
app.UseAuthentication(); app.UseAuthentication();
@ -266,6 +271,7 @@ public class CmsKitWebUnifiedModule : AbpModule
app.UseAuditing(); app.UseAuditing();
app.UseAbpSerilogEnrichers(); app.UseAbpSerilogEnrichers();
app.UseConfiguredEndpoints(); app.UseConfiguredEndpoints();
using (var scope = context.ServiceProvider.CreateScope()) using (var scope = context.ServiceProvider.CreateScope())
@ -279,3 +285,17 @@ public class CmsKitWebUnifiedModule : AbpModule
} }
} }
} }
public class CmsKitPageRouteValueTransformer : DynamicRouteValueTransformer, ITransientDependency
{
public override ValueTask<RouteValueDictionary> 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<RouteValueDictionary>(values);
}
}

2
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Pages/PageCacheKey.cs

@ -10,6 +10,6 @@ public class PageCacheKey
public override string ToString() public override string ToString()
{ {
return $"Page_{Slug}"; return $"CmsPage_{Slug}";
} }
} }

14
modules/cms-kit/src/Volo.CmsKit.Public.HttpApi.Client/ClientProxies/cms-kit-generate-proxy.json

@ -862,7 +862,7 @@
"uniqueName": "FindBySlugAsyncBySlug", "uniqueName": "FindBySlugAsyncBySlug",
"name": "FindBySlugAsync", "name": "FindBySlugAsync",
"httpMethod": "GET", "httpMethod": "GET",
"url": "api/cms-kit-public/pages/{slug}", "url": "api/cms-kit-public/pages/by-slug",
"supportedVersions": [], "supportedVersions": [],
"parametersOnMethod": [ "parametersOnMethod": [
{ {
@ -883,8 +883,8 @@
"typeSimple": "string", "typeSimple": "string",
"isOptional": false, "isOptional": false,
"defaultValue": null, "defaultValue": null,
"constraintTypes": [], "constraintTypes": null,
"bindingSourceId": "Path", "bindingSourceId": "Query",
"descriptorName": "" "descriptorName": ""
} }
], ],
@ -899,7 +899,7 @@
"uniqueName": "FindDefaultHomePageAsync", "uniqueName": "FindDefaultHomePageAsync",
"name": "FindDefaultHomePageAsync", "name": "FindDefaultHomePageAsync",
"httpMethod": "GET", "httpMethod": "GET",
"url": "api/cms-kit-public/pages", "url": "api/cms-kit-public/pages/home",
"supportedVersions": [], "supportedVersions": [],
"parametersOnMethod": [], "parametersOnMethod": [],
"parameters": [], "parameters": [],
@ -914,7 +914,7 @@
"uniqueName": "DoesSlugExistAsyncBySlug", "uniqueName": "DoesSlugExistAsyncBySlug",
"name": "DoesSlugExistAsync", "name": "DoesSlugExistAsync",
"httpMethod": "GET", "httpMethod": "GET",
"url": "api/cms-kit-public/pages/{slug}/exist", "url": "api/cms-kit-public/pages/check",
"supportedVersions": [], "supportedVersions": [],
"parametersOnMethod": [ "parametersOnMethod": [
{ {
@ -935,8 +935,8 @@
"typeSimple": "string", "typeSimple": "string",
"isOptional": false, "isOptional": false,
"defaultValue": null, "defaultValue": null,
"constraintTypes": [], "constraintTypes": null,
"bindingSourceId": "Path", "bindingSourceId": "Query",
"descriptorName": "" "descriptorName": ""
} }
], ],

1
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

9
modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo/CmsKit/Public/Pages/PagesPublicController.cs

@ -25,21 +25,22 @@ public class PagesPublicController : CmsKitPublicControllerBase, IPagePublicAppS
} }
[HttpGet] [HttpGet]
[Route("{slug}")] [Route("by-slug")]
public virtual Task<PageDto> FindBySlugAsync(string slug) public virtual Task<PageDto> FindBySlugAsync([FromQuery]string slug)
{ {
return PageAppService.FindBySlugAsync(slug); return PageAppService.FindBySlugAsync(slug);
} }
[HttpGet] [HttpGet]
[Route("home")]
public virtual Task<PageDto> FindDefaultHomePageAsync() public virtual Task<PageDto> FindDefaultHomePageAsync()
{ {
return PageAppService.FindDefaultHomePageAsync(); return PageAppService.FindDefaultHomePageAsync();
} }
[HttpGet] [HttpGet]
[Route("{slug}/exist")] [Route("check")]
public virtual Task<bool> DoesSlugExistAsync([NotNull] string slug) public virtual Task<bool> DoesSlugExistAsync([NotNull][FromQuery] string slug)
{ {
return PageAppService.DoesSlugExistAsync(slug); return PageAppService.DoesSlugExistAsync(slug);
} }

24
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.Abp.GlobalFeatures;
using Volo.CmsKit.GlobalFeatures; using Volo.CmsKit.GlobalFeatures;
@ -6,13 +8,33 @@ namespace Volo.CmsKit.Public.Web;
public static class CmsKitPagesMiddlewareExtensions public static class CmsKitPagesMiddlewareExtensions
{ {
private const string UseCmsKitHomePageMiddlewareKey = "UseCmsKitHomePageMiddleware";
[Obsolete("Use UseCmsKitPagesMiddleware instead.")]
public static IApplicationBuilder UseCmsKitHomePageMiddleware(this IApplicationBuilder builder) public static IApplicationBuilder UseCmsKitHomePageMiddleware(this IApplicationBuilder builder)
{ {
if (!GlobalFeatureManager.Instance.IsEnabled<PagesFeature>())
{
return builder;
}
builder.Properties[UseCmsKitHomePageMiddlewareKey] = true;
return builder.UseMiddleware<DefaultHomePageMiddleware>(); return builder.UseMiddleware<DefaultHomePageMiddleware>();
} }
public static IApplicationBuilder UseCmsKitPagesMiddleware(this IApplicationBuilder builder) public static IApplicationBuilder UseCmsKitPagesMiddleware(this IApplicationBuilder builder)
{ {
if (!GlobalFeatureManager.Instance.IsEnabled<PagesFeature>())
{
return builder;
}
if (!builder.Properties.ContainsKey(UseCmsKitHomePageMiddlewareKey))
{
builder.Properties[UseCmsKitHomePageMiddlewareKey] = true;
builder.UseMiddleware<DefaultHomePageMiddleware>();
}
return builder.UseMiddleware<PageRoutingMiddleware>(); return builder.UseMiddleware<PageRoutingMiddleware>();
} }
} }

11
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<PagesFeature>())
{
app.UseCmsKitHomePageMiddleware();
app.UseCmsKitPagesMiddleware();
}
}
} }

Loading…
Cancel
Save