From 937b1a99433d2380b5259b90e7357d23bed76186 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 5 Feb 2024 12:15:18 +0100 Subject: [PATCH] expect new end point for initial password --- .../src/packages/core/modal/token/index.ts | 2 -- .../action/create-user.collection-action.ts | 9 ++---- ...lement.ts => create-user-modal.element.ts} | 26 +++++++-------- .../modals/create}/create-user-modal.token.ts | 0 ...s => create-user-success-modal.element.ts} | 32 ++++++++++--------- .../create-user-success-modal.token.ts | 5 +-- .../packages/user/user/modals/manifests.ts | 4 +-- .../detail/user-detail.server.data-source.ts | 2 +- 8 files changed, 38 insertions(+), 42 deletions(-) rename src/Umbraco.Web.UI.Client/src/packages/user/user/modals/create/{user-create-modal.element.ts => create-user-modal.element.ts} (87%) rename src/Umbraco.Web.UI.Client/src/packages/{core/modal/token => user/user/modals/create}/create-user-modal.token.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/user/user/modals/create/{user-create-success-modal.element.ts => create-user-success-modal.element.ts} (79%) rename src/Umbraco.Web.UI.Client/src/packages/{core/modal/token => user/user/modals/create}/create-user-success-modal.token.ts (90%) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/modal/token/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/modal/token/index.ts index 5ee0bae669..55307c7363 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/modal/token/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/modal/token/index.ts @@ -2,8 +2,6 @@ export * from './change-password-modal.token.js'; export * from './code-editor-modal.token.js'; export * from './confirm-modal.token.js'; export * from './create-dictionary-modal.token.js'; -export * from './create-user-modal.token.js'; -export * from './create-user-success-modal.token.js'; export * from './current-user-modal.token.js'; export * from './data-type-picker-flow-data-type-picker-modal.token.js'; export * from './data-type-picker-flow-modal.token.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/user/collection/action/create-user.collection-action.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user/collection/action/create-user.collection-action.ts index 568acb00bc..136aac2122 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/user/user/collection/action/create-user.collection-action.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/user/user/collection/action/create-user.collection-action.ts @@ -1,11 +1,8 @@ +import { UMB_CREATE_USER_MODAL } from '../../modals/create/create-user-modal.token.js'; import { UmbCollectionActionBase } from '@umbraco-cms/backoffice/collection'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; -import type { - UmbModalManagerContext} from '@umbraco-cms/backoffice/modal'; -import { - UMB_CREATE_USER_MODAL, - UMB_MODAL_MANAGER_CONTEXT -} from '@umbraco-cms/backoffice/modal'; +import type { UmbModalManagerContext } from '@umbraco-cms/backoffice/modal'; +import { UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal'; export class UmbCreateUserCollectionAction extends UmbCollectionActionBase { #modalManagerContext: UmbModalManagerContext | undefined; diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/user/modals/create/user-create-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user/modals/create/create-user-modal.element.ts similarity index 87% rename from src/Umbraco.Web.UI.Client/src/packages/user/user/modals/create/user-create-modal.element.ts rename to src/Umbraco.Web.UI.Client/src/packages/user/user/modals/create/create-user-modal.element.ts index 418edde0e1..9ee4cf0a3f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/user/user/modals/create/user-create-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/user/user/modals/create/create-user-modal.element.ts @@ -1,16 +1,13 @@ import { UmbUserDetailRepository } from '../../repository/index.js'; +import { UMB_CREATE_USER_SUCCESS_MODAL } from './create-user-success-modal.token.js'; import type { UmbUserGroupInputElement } from '@umbraco-cms/backoffice/user-group'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import { css, html, customElement, query } from '@umbraco-cms/backoffice/external/lit'; import type { UmbModalManagerContext } from '@umbraco-cms/backoffice/modal'; -import { - UmbModalBaseElement, - UMB_MODAL_MANAGER_CONTEXT, - UMB_CREATE_USER_SUCCESS_MODAL, -} from '@umbraco-cms/backoffice/modal'; +import { UmbModalBaseElement, UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal'; -@customElement('umb-user-create-modal') -export class UmbUserCreateModalElement extends UmbModalBaseElement { +@customElement('umb-create-user-modal') +export class UmbCreateUserModalElement extends UmbModalBaseElement { #userDetailRepository = new UmbUserDetailRepository(this); #modalManagerContext?: UmbModalManagerContext; @@ -53,16 +50,17 @@ export class UmbUserCreateModalElement extends UmbModalBaseElement { // TODO: figure out when to use email or username const { data } = await this.#userDetailRepository.create(userScaffold); - if (data && data.unique && data.initialPassword) { - this.#openSuccessModal(data.unique, data.initialPassword); + if (data) { + this.#openSuccessModal(data.unique); } } - #openSuccessModal(userId: string, initialPassword: string) { + #openSuccessModal(userUnique: string) { const modalContext = this.#modalManagerContext?.open(UMB_CREATE_USER_SUCCESS_MODAL, { data: { - userId, - initialPassword, + user: { + unique: userUnique, + }, }, }); @@ -137,10 +135,10 @@ export class UmbUserCreateModalElement extends UmbModalBaseElement { ]; } -export default UmbUserCreateModalElement; +export default UmbCreateUserModalElement; declare global { interface HTMLElementTagNameMap { - 'umb-user-create-modal': UmbUserCreateModalElement; + 'umb-create-user-modal': UmbCreateUserModalElement; } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/modal/token/create-user-modal.token.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user/modals/create/create-user-modal.token.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/core/modal/token/create-user-modal.token.ts rename to src/Umbraco.Web.UI.Client/src/packages/user/user/modals/create/create-user-modal.token.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/user/modals/create/user-create-success-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user/modals/create/create-user-success-modal.element.ts similarity index 79% rename from src/Umbraco.Web.UI.Client/src/packages/user/user/modals/create/user-create-success-modal.element.ts rename to src/Umbraco.Web.UI.Client/src/packages/user/user/modals/create/create-user-success-modal.element.ts index 4c3ee3f279..2b2e5cfd6c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/user/user/modals/create/user-create-success-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/user/user/modals/create/create-user-success-modal.element.ts @@ -1,21 +1,27 @@ import { UmbUserItemRepository } from '../../repository/item/user-item.repository.js'; import type { UmbUserItemModel } from '../../repository/item/types.js'; +import type { + UmbCreateUserSuccessModalData, + UmbCreateUserSuccessModalValue, +} from './create-user-success-modal.token.js'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import { css, html, customElement, state } from '@umbraco-cms/backoffice/external/lit'; import type { UUIInputPasswordElement } from '@umbraco-cms/backoffice/external/uui'; import type { UmbNotificationDefaultData, UmbNotificationContext } from '@umbraco-cms/backoffice/notification'; import { UMB_NOTIFICATION_CONTEXT } from '@umbraco-cms/backoffice/notification'; -import type { UmbCreateUserSuccessModalData, UmbCreateUserSuccessModalValue } from '@umbraco-cms/backoffice/modal'; import { UmbModalBaseElement } from '@umbraco-cms/backoffice/modal'; -@customElement('umb-user-create-success-modal') -export class UmbUserCreateSuccessModalElement extends UmbModalBaseElement< +@customElement('umb-create-user-success-modal') +export class UmbCreateUserSuccessModalElement extends UmbModalBaseElement< UmbCreateUserSuccessModalData, UmbCreateUserSuccessModalValue > { @state() _userItem?: UmbUserItemModel; + @state() + _initialPassword: string = 'INITIAL PASSWORD GOES HERE'; + #userItemRepository = new UmbUserItemRepository(this); #notificationContext?: UmbNotificationContext; @@ -26,9 +32,10 @@ export class UmbUserCreateSuccessModalElement extends UmbModalBaseElement< } protected async firstUpdated(): Promise { - if (!this.data?.userId) throw new Error('No userId provided'); + if (!this.data?.user.unique) throw new Error('No user unique is provided'); - const { data } = await this.#userItemRepository.requestItems([this.data?.userId]); + // TODO: generate a new random password for the user, when the end point is ready + const { data } = await this.#userItemRepository.requestItems([this.data?.user.unique]); if (data) { this._userItem = data[0]; } @@ -55,8 +62,8 @@ export class UmbUserCreateSuccessModalElement extends UmbModalBaseElement< #onGoToProfile(event: Event) { event.stopPropagation(); - history.pushState(null, '', 'section/user-management/view/users/user/' + this.id); //TODO: URL Should be dynamic - this.modalContext?.submit(); + history.pushState(null, '', 'section/user-management/view/users/user/' + this.data?.user.unique); //TODO: URL Should be dynamic + this._submitModal(); } render() { @@ -65,12 +72,7 @@ export class UmbUserCreateSuccessModalElement extends UmbModalBaseElement< Password
- +
@@ -104,10 +106,10 @@ export class UmbUserCreateSuccessModalElement extends UmbModalBaseElement< ]; } -export default UmbUserCreateSuccessModalElement; +export default UmbCreateUserSuccessModalElement; declare global { interface HTMLElementTagNameMap { - 'umb-user-create-success-modal': UmbUserCreateSuccessModalElement; + 'umb-create-user-success-modal': UmbCreateUserSuccessModalElement; } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/modal/token/create-user-success-modal.token.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user/modals/create/create-user-success-modal.token.ts similarity index 90% rename from src/Umbraco.Web.UI.Client/src/packages/core/modal/token/create-user-success-modal.token.ts rename to src/Umbraco.Web.UI.Client/src/packages/user/user/modals/create/create-user-success-modal.token.ts index 8a7dc3046e..1f9d35aee7 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/modal/token/create-user-success-modal.token.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/user/user/modals/create/create-user-success-modal.token.ts @@ -1,8 +1,9 @@ import { UmbModalToken } from '@umbraco-cms/backoffice/modal'; export interface UmbCreateUserSuccessModalData { - userId: string; - initialPassword: string; + user: { + unique: string; + }; } export type UmbCreateUserSuccessModalValue = undefined; diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/user/modals/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user/modals/manifests.ts index bcb32e8211..e01a970060 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/user/user/modals/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/user/user/modals/manifests.ts @@ -5,13 +5,13 @@ const modals: Array = [ type: 'modal', alias: 'Umb.Modal.User.Create', name: 'Create User Modal', - js: () => import('./create/user-create-modal.element.js'), + js: () => import('./create/create-user-modal.element.js'), }, { type: 'modal', alias: 'Umb.Modal.User.CreateSuccess', name: 'Create Success User Modal', - js: () => import('./create/user-create-success-modal.element.js'), + js: () => import('./create/create-user-success-modal.element.js'), }, { type: 'modal', diff --git a/src/Umbraco.Web.UI.Client/src/packages/user/user/repository/detail/user-detail.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/user/user/repository/detail/user-detail.server.data-source.ts index d3fcfb4dec..3c8e2ffe41 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/user/user/repository/detail/user-detail.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/user/user/repository/detail/user-detail.server.data-source.ts @@ -119,7 +119,7 @@ export class UmbUserServerDataSource implements UmbDetailDataSource