From c642d99dbfb5b9820b9fec56d353a7feeaef2bb0 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Wed, 9 Oct 2024 09:47:57 +0200 Subject: [PATCH 1/3] fix: the system information button should be visible to anyone --- .../components/backoffice-header-logo.element.ts | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/apps/backoffice/components/backoffice-header-logo.element.ts b/src/apps/backoffice/components/backoffice-header-logo.element.ts index 3dd588cc84..e23427254c 100644 --- a/src/apps/backoffice/components/backoffice-header-logo.element.ts +++ b/src/apps/backoffice/components/backoffice-header-logo.element.ts @@ -73,12 +73,7 @@ export class UmbBackofficeHeaderLogoElement extends UmbLitElement { Umbraco.com - ${this._isUserAdmin - ? html`` - : ''} + From 91bf00f031509ce62adc235095e46764b7c7afd0 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Wed, 9 Oct 2024 09:54:24 +0200 Subject: [PATCH 2/3] chore: fix sonarcloud issues and optimise contexts --- .../sysinfo/components/sysinfo.element.ts | 24 ++++++++----------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/src/packages/sysinfo/components/sysinfo.element.ts b/src/packages/sysinfo/components/sysinfo.element.ts index 63dfb31984..4d2faef779 100644 --- a/src/packages/sysinfo/components/sysinfo.element.ts +++ b/src/packages/sysinfo/components/sysinfo.element.ts @@ -21,23 +21,17 @@ export class UmbSysinfoElement extends UmbModalBaseElement { @state() private _buttonState?: UUIButtonState; - #serverKeyValues: Array = []; - #sysinfoRepository = new UmbSysinfoRepository(this); - #notificationContext?: typeof UMB_NOTIFICATION_CONTEXT.TYPE; - - constructor() { - super(); - - this.consumeContext(UMB_NOTIFICATION_CONTEXT, (context) => { - this.#notificationContext = context; - }); + readonly #serverKeyValues: Array = []; + readonly #sysinfoRepository = new UmbSysinfoRepository(this); + override connectedCallback(): void { + super.connectedCallback(); this.#populate(); } async #populate() { this._loading = true; - this.#serverKeyValues = []; + this.#serverKeyValues.length = 0; const [serverTroubleshooting, serverInformation] = await Promise.all([ this.#sysinfoRepository.requestTroubleShooting(), @@ -45,7 +39,7 @@ export class UmbSysinfoElement extends UmbModalBaseElement { ]); if (serverTroubleshooting) { - this.#serverKeyValues = serverTroubleshooting.items; + this.#serverKeyValues.push(...serverTroubleshooting.items); } if (serverInformation) { @@ -100,6 +94,8 @@ export class UmbSysinfoElement extends UmbModalBaseElement { } async #copyToClipboard() { + const notificationContext = await this.getContext(UMB_NOTIFICATION_CONTEXT); + try { this._buttonState = 'waiting'; const text = `Umbraco system information @@ -109,7 +105,7 @@ ${this._systemInformation}`; await navigator.clipboard.writeText(textAsCode); setTimeout(() => { - this.#notificationContext?.peek('positive', { + notificationContext?.peek('positive', { data: { headline: 'System information', message: this.localize.term('speechBubbles_copySuccessMessage'), @@ -119,7 +115,7 @@ ${this._systemInformation}`; }, 250); } catch { this._buttonState = 'failed'; - this.#notificationContext?.peek('danger', { + notificationContext?.peek('danger', { data: { headline: 'System information', message: this.localize.term('speechBubbles_cannotCopyInformation'), From e044c024750c563b78fe0fd1074e1b85afde3099 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Wed, 9 Oct 2024 10:01:43 +0200 Subject: [PATCH 3/3] feat: add information about the current user --- .../sysinfo/components/sysinfo.element.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/packages/sysinfo/components/sysinfo.element.ts b/src/packages/sysinfo/components/sysinfo.element.ts index 4d2faef779..1cd7ccc38b 100644 --- a/src/packages/sysinfo/components/sysinfo.element.ts +++ b/src/packages/sysinfo/components/sysinfo.element.ts @@ -4,6 +4,7 @@ import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import { UmbModalBaseElement } from '@umbraco-cms/backoffice/modal'; import { UMB_NOTIFICATION_CONTEXT } from '@umbraco-cms/backoffice/notification'; import type { UUIButtonState } from '@umbraco-cms/backoffice/external/uui'; +import { UmbCurrentUserRepository } from '@umbraco-cms/backoffice/current-user'; type ServerKeyValue = { name: string; @@ -23,6 +24,7 @@ export class UmbSysinfoElement extends UmbModalBaseElement { readonly #serverKeyValues: Array = []; readonly #sysinfoRepository = new UmbSysinfoRepository(this); + readonly #currentUserRepository = new UmbCurrentUserRepository(this); override connectedCallback(): void { super.connectedCallback(); @@ -53,6 +55,22 @@ export class UmbSysinfoElement extends UmbModalBaseElement { this.#serverKeyValues.push({ name: 'Browser language', data: navigator.language }); this.#serverKeyValues.push({ name: 'Browser location', data: location.href }); + // User information + const { data: currentUser } = await this.#currentUserRepository.requestCurrentUser(); + if (currentUser) { + this.#serverKeyValues.push({ name: 'User is admin', data: currentUser.isAdmin ? 'Yes' : 'No' }); + this.#serverKeyValues.push({ name: 'User sections', data: currentUser.allowedSections.join(', ') }); + this.#serverKeyValues.push({ name: 'User culture', data: currentUser.languageIsoCode }); + this.#serverKeyValues.push({ + name: 'User languages', + data: currentUser.hasAccessToAllLanguages ? 'All' : currentUser.languages.join(', '), + }); + this.#serverKeyValues.push({ + name: 'User document start nodes', + data: currentUser.documentStartNodeUniques.length ? currentUser.documentStartNodeUniques.join(', ') : 'None', + }); + } + this._systemInformation = this.#renderServerKeyValues(); this._loading = false; }