From 5997c985a7cf46d22af8a42ca890d13ff4a613b6 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Wed, 15 May 2024 11:45:21 +0200 Subject: [PATCH] throw the error from the server --- .../src/packages/core/auth/auth-flow.ts | 3 ++- .../modals/external-login-modal.element.ts | 22 ++++++++++++------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/auth/auth-flow.ts b/src/Umbraco.Web.UI.Client/src/packages/core/auth/auth-flow.ts index 8486dbb711..b359ddf352 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/auth/auth-flow.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/auth/auth-flow.ts @@ -369,7 +369,8 @@ export class UmbAuthFlow { const result = await fetch(request); if (!result.ok) { - throw new Error('Failed to unlink login'); + const error = await result.json(); + throw error; } await this.signOut(); diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/external-login/modals/external-login-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/external-login/modals/external-login-modal.element.ts index de76f337f6..19aaf4c2ec 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/user/current-user/external-login/modals/external-login-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/user/current-user/external-login/modals/external-login-modal.element.ts @@ -8,6 +8,7 @@ import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registr import { mergeObservables } from '@umbraco-cms/backoffice/observable-api'; import { UMB_AUTH_CONTEXT } from '@umbraco-cms/backoffice/auth'; import { UMB_NOTIFICATION_CONTEXT } from '@umbraco-cms/backoffice/notification'; +import { ApiError, ProblemDetails } from '@umbraco-cms/backoffice/external/backend-api'; type UmbExternalLoginProviderOption = UmbCurrentUserExternalLoginProviderModel & { displayName: string; @@ -149,7 +150,7 @@ export class UmbCurrentUserExternalLoginModalElement extends UmbLitElement { color: 'positive', }); const authContext = await this.getContext(UMB_AUTH_CONTEXT); - authContext.linkLogin(item.providerSchemeName); + await authContext.linkLogin(item.providerSchemeName); } catch (error) { if (error instanceof Error) { this.#notificationContext?.peek('danger', { @@ -172,16 +173,21 @@ export class UmbCurrentUserExternalLoginModalElement extends UmbLitElement { color: 'danger', }); const authContext = await this.getContext(UMB_AUTH_CONTEXT); - authContext.unlinkLogin(item.providerSchemeName, item.providerKey); + await authContext.unlinkLogin(item.providerSchemeName, item.providerKey); } catch (error) { + let message = this.localize.term('errors_receivedErrorFromServer'); if (error instanceof Error) { - this.#notificationContext?.peek('danger', { - data: { - headline: this.localize.term('defaultdialogs_unLinkYour', providerDisplayName), - message: error.message, - }, - }); + message = error.message; + } else if (typeof error === 'object' && (error as ProblemDetails).title) { + message = (error as ProblemDetails).title ?? message; } + console.error('[External Login] Error unlinking provider: ', error); + this.#notificationContext?.peek('danger', { + data: { + headline: this.localize.term('defaultdialogs_unLinkYour', providerDisplayName), + message, + }, + }); } }