From 2a0399b98da1a8c4618fd42f6792d82746002db2 Mon Sep 17 00:00:00 2001 From: sbwalker Date: Tue, 16 Apr 2024 12:36:31 -0400 Subject: [PATCH] include .NET MAUI CORS policy for static files, add support for [wwwroot] in content --- Oqtane.Server/Startup.cs | 16 +++++++++++++--- Oqtane.Shared/Shared/Utilities.cs | 1 + 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/Oqtane.Server/Startup.cs b/Oqtane.Server/Startup.cs index 8180ea9b..0a83d275 100644 --- a/Oqtane.Server/Startup.cs +++ b/Oqtane.Server/Startup.cs @@ -22,6 +22,7 @@ using Oqtane.UI; using OqtaneSSR.Extensions; using Microsoft.AspNetCore.Components.Authorization; using Oqtane.Providers; +using Microsoft.AspNetCore.Cors.Infrastructure; namespace Oqtane { @@ -135,7 +136,7 @@ namespace Oqtane { // allow .NET MAUI client cross origin calls policy.WithOrigins("https://0.0.0.0", "http://0.0.0.0", "app://0.0.0.0") - .AllowAnyHeader().AllowCredentials(); + .AllowAnyHeader().AllowAnyMethod().AllowCredentials(); }); }); @@ -169,7 +170,7 @@ namespace Oqtane } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ISyncManager sync, ILogger logger) + public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ISyncManager sync, ICorsService corsService, ICorsPolicyProvider corsPolicyProvider, ILogger logger) { if (!string.IsNullOrEmpty(_configureServicesErrors)) { @@ -198,7 +199,16 @@ namespace Oqtane app.UseOqtaneLocalization(); app.UseHttpsRedirection(); - app.UseStaticFiles(); + app.UseStaticFiles(new StaticFileOptions + { + ServeUnknownFileTypes = true, + OnPrepareResponse = (ctx) => + { + var policy = corsPolicyProvider.GetPolicyAsync(ctx.Context, Constants.MauiCorsPolicy) + .ConfigureAwait(false).GetAwaiter().GetResult(); + corsService.ApplyResult(corsService.EvaluatePolicy(ctx.Context, policy), ctx.Context.Response); + } + }); app.UseExceptionMiddleWare(); app.UseTenantResolution(); app.UseJwtAuthorization(); diff --git a/Oqtane.Shared/Shared/Utilities.cs b/Oqtane.Shared/Shared/Utilities.cs index 00cfb3f6..b9e364c3 100644 --- a/Oqtane.Shared/Shared/Utilities.cs +++ b/Oqtane.Shared/Shared/Utilities.cs @@ -149,6 +149,7 @@ namespace Oqtane.Shared break; case "render": content = content.Replace(Constants.FileUrl, alias?.BaseUrl + aliasUrl + Constants.FileUrl); + content = content.Replace("[wwwroot]", alias?.BaseUrl + aliasUrl + "/"); // legacy content = content.Replace("[siteroot]", UrlCombine("Content", "Tenants", alias.TenantId.ToString(), "Sites", alias.SiteId.ToString())); content = content.Replace(Constants.ContentUrl, alias.Path + Constants.ContentUrl);