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(); + } +}