register public extensions in the app element

This commit is contained in:
Jacob Overgaard
2024-04-04 15:30:09 +02:00
parent 951d8831cd
commit 6f5b49886f
3 changed files with 16 additions and 7 deletions

View File

@@ -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<boolean> {
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)

View File

@@ -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);
}

View File

@@ -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: