From 93c6bb698d03a244ea9ddff9066d5ed97a777fa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rk=20Bartha?= Date: Tue, 19 Mar 2024 19:58:55 +0100 Subject: [PATCH] Fixing that media theme URLs are not evaluated on prefixed tenants --- .../MediaThemeAssetUrlRewritingMiddleware.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Lombiq.Hosting.MediaTheme.Bridge/Middlewares/MediaThemeAssetUrlRewritingMiddleware.cs b/Lombiq.Hosting.MediaTheme.Bridge/Middlewares/MediaThemeAssetUrlRewritingMiddleware.cs index 1371796..cfb1182 100644 --- a/Lombiq.Hosting.MediaTheme.Bridge/Middlewares/MediaThemeAssetUrlRewritingMiddleware.cs +++ b/Lombiq.Hosting.MediaTheme.Bridge/Middlewares/MediaThemeAssetUrlRewritingMiddleware.cs @@ -1,5 +1,6 @@ using Lombiq.Hosting.MediaTheme.Bridge.Constants; using Microsoft.AspNetCore.Http; +using OrchardCore.Environment.Shell; using OrchardCore.FileStorage; using OrchardCore.Media; using OrchardCore.Themes.Services; @@ -21,7 +22,8 @@ internal sealed class MediaThemeAssetUrlRewritingMiddleware public async Task InvokeAsync( HttpContext context, IMediaFileStore mediaFileStore, - ISiteThemeService siteThemeService) + ISiteThemeService siteThemeService, + ShellSettings shellSettings) { var isMediaThemeRequest = context.Request.Path .StartsWithSegments(new PathString(Routes.MediaThemeAssets), StringComparison.OrdinalIgnoreCase, out _); @@ -40,6 +42,12 @@ public async Task InvokeAsync( if (!context.IsDevelopment() || await mediaFileStore.FileExistsAsync(mediaPath)) { assetUrl = mediaFileStore.MapPathToPublicUrl(mediaPath); + + if (!string.IsNullOrEmpty(shellSettings.RequestUrlPrefix) && + assetUrl.StartsWith("/" + shellSettings.RequestUrlPrefix, StringComparison.OrdinalIgnoreCase)) + { + assetUrl = assetUrl[(shellSettings.RequestUrlPrefix.Length + 1)..]; + } } else {