Browse Source

Fix path base. (#1302)

* Fix path base.

* Minor fixes.
pull/1307/head
Sebastian Stehle 5 months ago
committed by GitHub
parent
commit
1ad55512a6
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 2
      backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/ScriptExecutionContext.cs
  2. 47
      backend/src/Squidex.Web/PathBaseMiddlewareExtensions.cs
  3. 1
      backend/src/Squidex.Web/Resources.cs
  4. 2
      backend/src/Squidex/Startup.cs

2
backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/ScriptExecutionContext.cs

@ -49,7 +49,7 @@ public sealed class ScriptExecutionContext<T> : ScriptExecutionContext, ISchedul
{
TryComplete();
var result = await tcs.Task.WithCancellation(default);
var result = await tcs.Task.WithCancellation(cancellationToken);
if (result == null)
{
return fallback();

47
backend/src/Squidex.Web/PathBaseMiddlewareExtensions.cs

@ -0,0 +1,47 @@
// ==========================================================================
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex UG (haftungsbeschraenkt)
// All rights reserved. Licensed under the MIT license.
// ==========================================================================
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Squidex.Hosting;
namespace Squidex.Web;
public static class PathBaseMiddlewareExtensions
{
public static IApplicationBuilder UseFallbackPathBase(this IApplicationBuilder app)
{
var urlGenerator = app.ApplicationServices.GetRequiredService<IUrlGenerator>();
var configuredBase = urlGenerator.BuildBasePath();
if (string.IsNullOrWhiteSpace(configuredBase) || configuredBase == "/")
{
return app;
}
var pathBase = new PathString(configuredBase);
return app.Use(async (context, next) =>
{
if (context.Request.PathBase.HasValue)
{
await next();
return;
}
context.Request.PathBase = pathBase;
if (context.Request.Path.StartsWithSegments(pathBase, StringComparison.Ordinal, out var remainder))
{
context.Request.Path = remainder;
}
await next();
});
}
}

1
backend/src/Squidex.Web/Resources.cs

@ -170,7 +170,6 @@ public sealed class Resources(ApiController controller)
var url = Controller.Url(action, values);
var basePath = Controller.HttpContext.Request.PathBase;
if (url.StartsWith(Controller.HttpContext.Request.PathBase, StringComparison.OrdinalIgnoreCase))
{
url = url[basePath.Value!.Length..];

2
backend/src/Squidex/Startup.cs

@ -73,7 +73,7 @@ public sealed class Startup(IConfiguration config)
{
app.UseWebSockets();
app.UseCookiePolicy();
app.UseDefaultPathBase();
app.UseFallbackPathBase();
app.UseDefaultForwardRules();
app.UseSquidexLogging();
app.UseSquidexLocalization();

Loading…
Cancel
Save