From 6f5b49886f15ef49e75f18111270e1d0f144e7e4 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Thu, 4 Apr 2024 15:30:09 +0200 Subject: [PATCH] register public extensions in the app element --- .../src/apps/app/app-auth.controller.ts | 12 ++++++++++++ .../src/apps/app/app.element.ts | 3 +++ .../src/apps/backoffice/backoffice.element.ts | 8 +------- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/apps/app/app-auth.controller.ts b/src/Umbraco.Web.UI.Client/src/apps/app/app-auth.controller.ts index 73c31479d9..9d0c7983c9 100644 --- a/src/Umbraco.Web.UI.Client/src/apps/app/app-auth.controller.ts +++ b/src/Umbraco.Web.UI.Client/src/apps/app/app-auth.controller.ts @@ -1,9 +1,13 @@ import { UMB_AUTH_CONTEXT, UMB_STORAGE_REDIRECT_URL } from '@umbraco-cms/backoffice/auth'; import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import { UmbServerExtensionRegistrator } from '@umbraco-cms/backoffice/extension-api'; +import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry'; export class UmbAppAuthController extends UmbControllerBase { #authContext?: typeof UMB_AUTH_CONTEXT.TYPE; + #serverExtensionRegistrator = new UmbServerExtensionRegistrator(this, umbExtensionsRegistry); + #init; constructor(host: UmbControllerHost) { super(host); @@ -11,6 +15,8 @@ export class UmbAppAuthController extends UmbControllerBase { this.consumeContext(UMB_AUTH_CONTEXT, (context) => { this.#authContext = context; }); + + this.#init = Promise.all([this.#serverExtensionRegistrator.registerPublicExtensions()]); } /** @@ -35,11 +41,17 @@ export class UmbAppAuthController extends UmbControllerBase { return this.makeAuthorizationRequest(); } + /** + * Starts the authorization flow. + * It will check which providers are available and either redirect directly to the provider or show a provider selection screen. + */ async makeAuthorizationRequest(): Promise { if (!this.#authContext) { throw new Error('[Fatal] Auth context is not available'); } + await this.#init; + this.#authContext.makeAuthorizationRequest(); // Reinitialize the auth flow (load the state from local storage) diff --git a/src/Umbraco.Web.UI.Client/src/apps/app/app.element.ts b/src/Umbraco.Web.UI.Client/src/apps/app/app.element.ts index 3ccb67046a..94cf02eed0 100644 --- a/src/Umbraco.Web.UI.Client/src/apps/app/app.element.ts +++ b/src/Umbraco.Web.UI.Client/src/apps/app/app.element.ts @@ -67,6 +67,9 @@ export class UmbAppElement extends UmbLitElement { new UmbContextDebugController(this); + new UmbBundleExtensionInitializer(this, umbExtensionsRegistry); + new UmbEntryPointExtensionInitializer(this, umbExtensionsRegistry); + this.#umbIconRegistry.attach(this); this.#uuiIconRegistry.attach(this); } diff --git a/src/Umbraco.Web.UI.Client/src/apps/backoffice/backoffice.element.ts b/src/Umbraco.Web.UI.Client/src/apps/backoffice/backoffice.element.ts index 4d77370af7..407e04a759 100644 --- a/src/Umbraco.Web.UI.Client/src/apps/backoffice/backoffice.element.ts +++ b/src/Umbraco.Web.UI.Client/src/apps/backoffice/backoffice.element.ts @@ -1,11 +1,7 @@ import { UmbBackofficeContext } from './backoffice.context.js'; import { css, html, customElement } from '@umbraco-cms/backoffice/external/lit'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry'; -import { - UmbBundleExtensionInitializer, - UmbEntryPointExtensionInitializer, - UmbServerExtensionRegistrator, -} from '@umbraco-cms/backoffice/extension-api'; +import { UmbServerExtensionRegistrator } from '@umbraco-cms/backoffice/extension-api'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; import './components/index.js'; @@ -53,8 +49,6 @@ export class UmbBackofficeElement extends UmbLitElement { super(); new UmbBackofficeContext(this); - new UmbBundleExtensionInitializer(this, umbExtensionsRegistry); - new UmbEntryPointExtensionInitializer(this, umbExtensionsRegistry); new UmbServerExtensionRegistrator(this, umbExtensionsRegistry).registerAllExtensions(); // So far local packages are this simple to registerer, so no need for a manager to do that: