Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

V14: Allowing custom backoffice host with CORS policy #15269

Merged
merged 2 commits into from Nov 21, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
@@ -0,0 +1,53 @@
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Umbraco.Cms.Core;
using Umbraco.Cms.Core.DependencyInjection;
using Umbraco.Cms.Core.Models.Configuration;
using Umbraco.Cms.Web.Common.ApplicationBuilder;

namespace Umbraco.Cms.Api.Management.DependencyInjection;

internal static class BackOfficeCorsPolicyBuilderExtensions
{
internal static IUmbracoBuilder AddCorsPolicy(this IUmbracoBuilder builder)
{
// FIXME: Get the correct settings once NewBackOfficeSettings is merged with relevant existing settings from Core
Uri? backOfficeHost = builder.Config
.GetSection($"{Constants.Configuration.ConfigPrefix}NewBackOffice")
.Get<NewBackOfficeSettings>()?.BackOfficeHost;

if (backOfficeHost is null)
{
return builder;
}

const string policyName = "AllowCustomBackOfficeOrigin";

// The specified URL must not contain a trailing slash (/)
var customOrigin = backOfficeHost.ToString().TrimEnd(Constants.CharArrays.ForwardSlash);

builder.Services.AddCors(options =>
{
options.AddPolicy(name: policyName,
policy =>
{
policy
.WithOrigins(customOrigin)
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
});
});

builder.Services.Configure<UmbracoPipelineOptions>(options =>
{
options.AddFilter(new UmbracoPipelineFilter("UmbracoManagementApiCustomHostCorsPolicy")
{
PostRouting = app => app.UseCors(policyName)
});
});

return builder;
}
}
1 change: 1 addition & 0 deletions src/Umbraco.Cms.Api.Management/ManagementApiComposer.cs
Expand Up @@ -52,6 +52,7 @@ public void Compose(IUmbracoBuilder builder)
.AddScripts()
.AddPartialViews()
.AddStylesheets()
.AddCorsPolicy()
.AddBackOfficeAuthentication();

services
Expand Down