Skip to content

Commit 04b888d

Browse files
committed
Protect backoffice api
1 parent de94d0f commit 04b888d

File tree

4 files changed

+28
-7
lines changed

4 files changed

+28
-7
lines changed

src/Umbraco.Commerce.Checkout/Client/src/backoffice/apis/install.api.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,21 @@ export type InstallUccApiResponse = {
33
success: boolean,
44
message?: string
55
}
6-
export const installUmbracoCommerceCheckoutAsync: (siteRootNodeId: string) => Promise<InstallUccApiResponse> = (siteRootNodeId: string) => {
6+
7+
export const OpenApiConfig: {
8+
credentials: RequestCredentials,
9+
token: () => Promise<string>,
10+
} = {
11+
credentials: 'same-origin',
12+
token: async () => '',
13+
};
14+
15+
export const installUmbracoCommerceCheckoutAsync: (siteRootNodeId: string) => Promise<InstallUccApiResponse> = async (siteRootNodeId: string) => {
716
const response = fetch('/umbraco/management/api/v1/umbraco-commerce-checkout/install?siteRootNodeId=' + siteRootNodeId, {
8-
credentials: 'include',
17+
credentials: OpenApiConfig.credentials,
18+
headers: {
19+
'Authorization': 'Bearer ' + await OpenApiConfig.token(),
20+
},
921
}).then(
1022
(response: Response) => {
1123
return response.json() as Promise<InstallUccApiResponse>;
Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
import type { UmbEntryPointOnInit } from '@umbraco-cms/backoffice/extension-api';
22

3+
import { UMB_AUTH_CONTEXT } from '@umbraco-cms/backoffice/auth';
34
import { manifests as dashboardManifest } from './dashboards/manifest';
4-
55
import { ManifestTypes } from '@umbraco-cms/backoffice/extension-registry';
6+
import { OpenApiConfig } from './apis/install.api';
67

78
const manifests: Array<ManifestTypes> = [
89
...dashboardManifest,
910
];
1011

1112
export const onInit: UmbEntryPointOnInit = (_host, extensionRegistry) => {
1213
extensionRegistry.registerMany(manifests);
14+
_host.consumeContext(UMB_AUTH_CONTEXT, async (instance) => {
15+
if (!instance) return;
16+
const umbOpenApi = instance.getOpenApiConfiguration();
17+
OpenApiConfig.token = umbOpenApi.token;
18+
});
1319
};

src/Umbraco.Commerce.Checkout/Web/Controllers/UmbracoCommerceCheckoutApiController.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,25 @@
11
using System;
22
using System.Threading.Tasks;
33
using Asp.Versioning;
4+
using Microsoft.AspNetCore.Authorization;
45
using Microsoft.AspNetCore.Mvc;
6+
using Umbraco.Cms.Api.Management.Controllers;
57
using Umbraco.Cms.Api.Management.Routing;
68
using Umbraco.Cms.Core.Models;
79
using Umbraco.Cms.Core.Services;
10+
using Umbraco.Cms.Web.Common.Authorization;
811
using Umbraco.Commerce.Checkout.Services;
912
using Umbraco.Commerce.Core.Api;
1013
using Umbraco.Commerce.Core.Models;
1114

1215
namespace Umbraco.Commerce.Checkout.Web.Controllers
1316
{
14-
[ApiController]
1517
[ApiVersion("1.0")]
1618
[VersionedApiBackOfficeRoute("umbraco-commerce-checkout")]
1719
[ApiExplorerSettings(GroupName = "Umbraco Commerce Checkout API")]
18-
//[Authorize(Policy = AuthorizationPolicies.SectionAccessSettings)]
19-
public class UmbracoCommerceCheckoutApiController : Controller
20+
[Authorize]
21+
[Authorize(AuthorizationPolicies.SectionAccessSettings)]
22+
public class UmbracoCommerceCheckoutApiController : ManagementApiControllerBase
2023
{
2124
private readonly IUmbracoCommerceApi _commerceApi;
2225
private readonly IContentService _contentService;

version.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"$schema": "https://raw.githubusercontent.com/dotnet/Nerdbank.GitVersioning/master/src/NerdBank.GitVersioning/version.schema.json",
3-
"version": "14.0.0-rc1",
3+
"version": "14.0.0-rc2",
44
"assemblyVersion": {
55
"precision": "build"
66
},

0 commit comments

Comments
 (0)