From 95115cef4d501700660f1f9e5035cb55929506c4 Mon Sep 17 00:00:00 2001 From: malik masis Date: Wed, 10 Aug 2022 16:58:52 +0300 Subject: [PATCH] Added a new middleware to set the default homepage --- .../CmsKitPublicWebModule.cs | 17 +++++++---- .../DefaultHomePageMiddleware.cs | 28 +++++++++++++++++++ .../HomePageDefaultMiddlewareExtensions.cs | 11 ++++++++ 3 files changed, 51 insertions(+), 5 deletions(-) create mode 100644 modules/cms-kit/src/Volo.CmsKit.Public.Web/DefaultHomePageMiddleware.cs create mode 100644 modules/cms-kit/src/Volo.CmsKit.Public.Web/HomePageDefaultMiddlewareExtensions.cs 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 88b01c8ae9..6e30c49a9c 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/CmsKitPublicWebModule.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/CmsKitPublicWebModule.cs @@ -1,6 +1,7 @@ using Markdig; using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.Extensions.DependencyInjection; +using Volo.Abp; using Volo.Abp.AspNetCore.Mvc.Localization; using Volo.Abp.AspNetCore.Mvc.UI.Components.LayoutHook; using Volo.Abp.AutoMapper; @@ -88,21 +89,27 @@ public class CmsKitPublicWebModule : AbpModule options.Conventions.AddPageRoute("/Public/CmsKit/Blogs/BlogPost", @"/blogs/{blogSlug}/{blogPostSlug:minlength(1)}"); }); } - + if (GlobalFeatureManager.Instance.IsEnabled()) { Configure(options => { options.Add( - LayoutHooks.Head.Last, - typeof(GlobalStyleViewComponent) + LayoutHooks.Head.Last, + typeof(GlobalStyleViewComponent) ); options.Add( - LayoutHooks.Body.Last, - typeof(GlobalScriptViewComponent) + LayoutHooks.Body.Last, + typeof(GlobalScriptViewComponent) ); }); } } + + public override void OnApplicationInitialization(ApplicationInitializationContext context) + { + var app = context.GetApplicationBuilder(); + app.UseHomePageDefaultMiddleware(); + } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/DefaultHomePageMiddleware.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/DefaultHomePageMiddleware.cs new file mode 100644 index 0000000000..bb30a5276c --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/DefaultHomePageMiddleware.cs @@ -0,0 +1,28 @@ +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Volo.CmsKit.Pages; +using Volo.CmsKit.Public.Pages; + +namespace Volo.CmsKit.Public.Web; + +public class DefaultHomePageMiddleware +{ + private readonly RequestDelegate _next; + private readonly IPagePublicAppService _pagePublicAppService; + + public DefaultHomePageMiddleware(RequestDelegate next, IPagePublicAppService pagePublicAppService) + { + _next = next; + _pagePublicAppService = pagePublicAppService; + } + public async Task InvokeAsync(HttpContext httpContext) + { + var page = await _pagePublicAppService.FindDefaultHomePageAsync(); + if (page is not null && httpContext.Request.Path.Value == "/") + { + httpContext.Request.Path = $"{PageConsts.UrlPrefix}{page.Slug}"; + } + + await _next(httpContext); + } +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/HomePageDefaultMiddlewareExtensions.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/HomePageDefaultMiddlewareExtensions.cs new file mode 100644 index 0000000000..c5a2d8516f --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/HomePageDefaultMiddlewareExtensions.cs @@ -0,0 +1,11 @@ +using Microsoft.AspNetCore.Builder; + +namespace Volo.CmsKit.Public.Web; + +public static class HomePageDefaultMiddlewareExtensions +{ + public static IApplicationBuilder UseHomePageDefaultMiddleware(this IApplicationBuilder builder) + { + return builder.UseMiddleware(); + } +}