{"version":3,"file":"public-access-modal.element-bQzDQMsC.js","sources":["../../../src/packages/documents/documents/entity-actions/public-access/repository/public-access.server.data.ts","../../../src/packages/documents/documents/entity-actions/public-access/repository/public-access.repository.ts","../../../src/packages/documents/documents/entity-actions/public-access/modal/public-access-modal.element.ts"],"sourcesContent":["import { DocumentService } from '@umbraco-cms/backoffice/external/backend-api';\r\nimport type { PublicAccessRequestModel } from '@umbraco-cms/backoffice/external/backend-api';\r\nimport type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';\r\nimport { tryExecute, tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources';\r\n\r\n/**\r\n * A data source for the Document Public Access that fetches data from the server\r\n * @class UmbDocumentPublicAccessServerDataSource\r\n * @implements {RepositoryDetailDataSource}\r\n */\r\nexport class UmbDocumentPublicAccessServerDataSource {\r\n\t#host: UmbControllerHost;\r\n\r\n\t/**\r\n\t * Creates an instance of UmbDocumentPublicAccessServerDataSource.\r\n\t * @param {UmbControllerHost} host - The controller host for this controller to be appended to\r\n\t * @memberof UmbDocumentPublicAccessServerDataSource\r\n\t */\r\n\tconstructor(host: UmbControllerHost) {\r\n\t\tthis.#host = host;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates the Public Access for the given Document unique\r\n\t * @param {string} unique\r\n\t * @param {PublicAccessRequestModel} data\r\n\t * @memberof UmbDocumentPublicAccessServerDataSource\r\n\t */\r\n\tasync create(unique: string, data: PublicAccessRequestModel) {\r\n\t\tif (!unique) throw new Error('unique is missing');\r\n\t\treturn tryExecuteAndNotify(\r\n\t\t\tthis.#host,\r\n\t\t\tDocumentService.postDocumentByIdPublicAccess({ id: unique, requestBody: data }),\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Fetches the Public Access for the given Document unique\r\n\t * @param {string} unique\r\n\t * @memberof UmbDocumentPublicAccessServerDataSource\r\n\t */\r\n\tasync read(unique: string) {\r\n\t\tif (!unique) throw new Error('unique is missing');\r\n\t\t// NOTE: The entity will not be present, when fetching Public Access for a descendant of a protected Document.\r\n\t\t// This is a perfectly valid scenario, which is handled in the view. In other words, just use tryExecute here.\r\n\t\treturn tryExecute(DocumentService.getDocumentByIdPublicAccess({ id: unique }));\r\n\t}\r\n\r\n\t/**\r\n\t * Updates Public Access for the given Document unique\r\n\t * @param {string} unique\r\n\t * @param {PublicAccessRequestModel} data\r\n\t * @param requestBody\r\n\t * @memberof UmbDocumentPublicAccessServerDataSource\r\n\t */\r\n\tasync update(unique: string, requestBody: PublicAccessRequestModel) {\r\n\t\tif (!unique) throw new Error('unique is missing');\r\n\t\treturn tryExecuteAndNotify(this.#host, DocumentService.putDocumentByIdPublicAccess({ id: unique, requestBody }));\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes Public Access for the given Document unique\r\n\t * @param {string} unique\r\n\t * @memberof UmbDocumentPublicAccessServerDataSource\r\n\t */\r\n\tasync delete(unique: string) {\r\n\t\tif (!unique) throw new Error('unique is missing');\r\n\t\treturn tryExecuteAndNotify(this.#host, DocumentService.deleteDocumentByIdPublicAccess({ id: unique }));\r\n\t}\r\n}\r\n","import { UmbDocumentPublicAccessServerDataSource } from './public-access.server.data.js';\r\nimport type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';\r\nimport { UmbControllerBase } from '@umbraco-cms/backoffice/class-api';\r\nimport type { UmbNotificationContext } from '@umbraco-cms/backoffice/notification';\r\nimport { UMB_NOTIFICATION_CONTEXT } from '@umbraco-cms/backoffice/notification';\r\nimport type { UmbApi } from '@umbraco-cms/backoffice/extension-api';\r\nimport type { PublicAccessRequestModel } from '@umbraco-cms/backoffice/external/backend-api';\r\n\r\nexport class UmbDocumentPublicAccessRepository extends UmbControllerBase implements UmbApi {\r\n\t#dataSource: UmbDocumentPublicAccessServerDataSource;\r\n\r\n\t#notificationContext?: UmbNotificationContext;\r\n\r\n\tconstructor(host: UmbControllerHost) {\r\n\t\tsuper(host);\r\n\r\n\t\tthis.#dataSource = new UmbDocumentPublicAccessServerDataSource(this);\r\n\r\n\t\tthis.consumeContext(UMB_NOTIFICATION_CONTEXT, (instance) => {\r\n\t\t\tthis.#notificationContext = instance as UmbNotificationContext;\r\n\t\t});\r\n\t}\r\n\r\n\tasync create(unique: string, data: PublicAccessRequestModel) {\r\n\t\tif (!unique) throw new Error('unique is missing');\r\n\t\tif (!data) throw new Error('Data is missing');\r\n\r\n\t\tconst { error } = await this.#dataSource.create(unique, data);\r\n\t\tif (!error) {\r\n\t\t\tconst notification = { data: { message: `Public access setting created` } };\r\n\t\t\tthis.#notificationContext?.peek('positive', notification);\r\n\t\t}\r\n\t\treturn { error };\r\n\t}\r\n\r\n\tasync read(unique: string) {\r\n\t\tif (!unique) throw new Error('unique is missing');\r\n\r\n\t\tconst { data, error } = await this.#dataSource.read(unique);\r\n\t\treturn { data, error };\r\n\t}\r\n\r\n\tasync update(unique: string, data: PublicAccessRequestModel) {\r\n\t\tif (!unique) throw new Error('unique is missing');\r\n\t\tif (!data) throw new Error('Data is missing');\r\n\r\n\t\tconst { error } = await this.#dataSource.update(unique, data);\r\n\t\tif (!error) {\r\n\t\t\tconst notification = { data: { message: `Public access setting updated` } };\r\n\t\t\tthis.#notificationContext?.peek('positive', notification);\r\n\t\t}\r\n\t\treturn { error };\r\n\t}\r\n\r\n\tasync delete(unique: string) {\r\n\t\tif (!unique) throw new Error('unique is missing');\r\n\r\n\t\tconst { error } = await this.#dataSource.delete(unique);\r\n\t\tif (!error) {\r\n\t\t\tconst notification = { data: { message: `Public access setting deleted` } };\r\n\t\t\tthis.#notificationContext?.peek('positive', notification);\r\n\t\t}\r\n\t\treturn { error };\r\n\t}\r\n}\r\n\r\nexport { UmbDocumentPublicAccessRepository as api };\r\n","import { UmbDocumentPublicAccessRepository } from '../repository/public-access.repository.js';\r\nimport { UmbDocumentItemRepository } from '../../../repository/index.js';\r\nimport type { UmbInputDocumentElement } from '../../../components/index.js';\r\nimport type { UmbPublicAccessModalData, UmbPublicAccessModalValue } from './public-access-modal.token.js';\r\nimport { css, customElement, html, nothing, state } from '@umbraco-cms/backoffice/external/lit';\r\nimport { UmbModalBaseElement } from '@umbraco-cms/backoffice/modal';\r\nimport { UmbTextStyles } from '@umbraco-cms/backoffice/style';\r\nimport { UmbMemberDetailRepository, type UmbInputMemberElement } from '@umbraco-cms/backoffice/member';\r\nimport { UmbMemberGroupItemRepository, type UmbInputMemberGroupElement } from '@umbraco-cms/backoffice/member-group';\r\nimport type { PublicAccessRequestModel } from '@umbraco-cms/backoffice/external/backend-api';\r\nimport type { UUIRadioEvent } from '@umbraco-cms/backoffice/external/uui';\r\n\r\n@customElement('umb-public-access-modal')\r\nexport class UmbPublicAccessModalElement extends UmbModalBaseElement<\r\n\tUmbPublicAccessModalData,\r\n\tUmbPublicAccessModalValue\r\n> {\r\n\t#publicAccessRepository = new UmbDocumentPublicAccessRepository(this);\r\n\t#unique?: string;\r\n\t#isNew: boolean = true;\r\n\r\n\t@state()\r\n\tprivate _documentName = '';\r\n\r\n\t@state()\r\n\tprivate _specific?: boolean;\r\n\r\n\t@state()\r\n\tprivate _startPage = true;\r\n\r\n\t@state()\r\n\tprivate _selection: Array = [];\r\n\r\n\t@state()\r\n\tprivate _loginDocumentId?: string;\r\n\r\n\t@state()\r\n\tprivate _errorDocumentId?: string;\r\n\r\n\t// Init\r\n\r\n\toverride firstUpdated() {\r\n\t\tthis.#unique = this.data?.unique;\r\n\t\tthis.#getDocumentName();\r\n\t}\r\n\r\n\tasync #getDocumentName() {\r\n\t\tif (!this.#unique) return;\r\n\t\t// Should this be done here or in the action file?\r\n\t\tconst { data } = await new UmbDocumentItemRepository(this).requestItems([this.#unique]);\r\n\t\tif (!data) return;\r\n\t\tconst item = data[0];\r\n\t\t//TODO How do we ensure we get the correct variant?\r\n\t\tthis._documentName = item.variants[0]?.name;\r\n\r\n\t\tif (item.isProtected) {\r\n\t\t\tthis.#getPublicAccessModel();\r\n\t\t}\r\n\t}\r\n\r\n\tasync #getPublicAccessModel() {\r\n\t\tif (!this.#unique) return;\r\n\t\tconst { data } = await this.#publicAccessRepository.read(this.#unique);\r\n\r\n\t\tif (!data) return;\r\n\t\tthis.#isNew = false;\r\n\t\tthis._startPage = false;\r\n\r\n\t\t// Specific or Groups\r\n\t\tthis._specific = data.members.length > 0;\r\n\r\n\t\t//selection\r\n\t\tif (data.members.length > 0) {\r\n\t\t\tthis._selection = data.members.map((m) => m.id);\r\n\t\t} else if (data.groups.length > 0) {\r\n\t\t\tthis._selection = data.groups.map((g) => g.id);\r\n\t\t}\r\n\r\n\t\tthis._loginDocumentId = data.loginDocument.id;\r\n\t\tthis._errorDocumentId = data.errorDocument.id;\r\n\t}\r\n\r\n\t// Modal events\r\n\r\n\t#handleNext() {\r\n\t\tthis._startPage = false;\r\n\t}\r\n\r\n\tasync #handleSave() {\r\n\t\tif (!this._loginDocumentId || !this._errorDocumentId || !this.#unique) return;\r\n\r\n\t\t// TODO: [v15] Currently the Management API doesn't support passing the member/group ids, only the userNames/names.\r\n\t\t// This is a temporary solution where we have to look them up until the API is updated to support this.\r\n\t\tconst requestBody: PublicAccessRequestModel = {\r\n\t\t\tmemberGroupNames: [],\r\n\t\t\tmemberUserNames: [],\r\n\t\t\tloginDocument: { id: this._loginDocumentId },\r\n\t\t\terrorDocument: { id: this._errorDocumentId },\r\n\t\t};\r\n\r\n\t\tif (this._specific) {\r\n\t\t\t// Members\r\n\t\t\t// user name is not part of the item model, so we need to look it up from the member detail repository\r\n\t\t\t// be aware that the detail repository requires access to the member section.\r\n\t\t\tconst repo = new UmbMemberDetailRepository(this);\r\n\t\t\tconst promises = this._selection.map((memberId) => repo.requestByUnique(memberId));\r\n\t\t\tconst responses = await Promise.all(promises);\r\n\t\t\tconst memberUserNames = responses\r\n\t\t\t\t.filter((response) => response.data)\r\n\t\t\t\t.map((response) => response.data?.username) as string[];\r\n\r\n\t\t\trequestBody.memberUserNames = memberUserNames;\r\n\t\t} else {\r\n\t\t\t// Groups\r\n\t\t\tconst repo = new UmbMemberGroupItemRepository(this);\r\n\t\t\tconst { data } = await repo.requestItems(this._selection);\r\n\t\t\tif (!data) throw new Error('No Member groups returned');\r\n\r\n\t\t\tconst groupNames = data\r\n\t\t\t\t.filter((groupItem) => this._selection.includes(groupItem.unique))\r\n\t\t\t\t.map((groupItem) => groupItem.name);\r\n\r\n\t\t\trequestBody.memberGroupNames = groupNames;\r\n\t\t}\r\n\r\n\t\tif (this.#isNew) {\r\n\t\t\tawait this.#publicAccessRepository.create(this.#unique, requestBody);\r\n\t\t} else {\r\n\t\t\tawait this.#publicAccessRepository.update(this.#unique, requestBody);\r\n\t\t}\r\n\r\n\t\tthis.modalContext?.submit();\r\n\t}\r\n\r\n\tasync #handleDelete() {\r\n\t\tif (!this.#unique) return;\r\n\t\tawait this.#publicAccessRepository.delete(this.#unique);\r\n\t\tthis.modalContext?.submit();\r\n\t}\r\n\r\n\t#handleCancel() {\r\n\t\tthis.modalContext?.reject();\r\n\t}\r\n\r\n\t// Change Events\r\n\r\n\t#onChangeLoginPage(e: CustomEvent) {\r\n\t\tthis._loginDocumentId = (e.target as UmbInputDocumentElement).selection[0];\r\n\t}\r\n\r\n\t#onChangeErrorPage(e: CustomEvent) {\r\n\t\tthis._errorDocumentId = (e.target as UmbInputDocumentElement).selection[0];\r\n\t}\r\n\r\n\t#onChangeGroup(e: CustomEvent) {\r\n\t\tthis._selection = (e.target as UmbInputMemberGroupElement).selection;\r\n\t}\r\n\r\n\t#onChangeMember(e: CustomEvent) {\r\n\t\tthis._selection = (e.target as UmbInputMemberElement).selection;\r\n\t}\r\n\r\n\t// Renders\r\n\r\n\toverride render() {\r\n\t\treturn html`\r\n\t\t\t\r\n\t\t\t\t${this._startPage ? this.renderSelectGroup() : this.renderEditPage()} ${this.renderActions()}\r\n\t\t\t\r\n\t\t`;\r\n\t}\r\n\r\n\t// First page when no Restricting Public Access is set.\r\n\trenderSelectGroup() {\r\n\t\treturn html`\r\n\t\t\t\tChoose how you want to restrict public access to the page '${this._documentName}'.\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\te.target.value === 'members' ? (this._specific = true) : (this._specific = false)}>\r\n\t\t\t\t\r\n\t\t\t\t\t${this.localize.term('publicAccess_paMembers')}
\r\n\t\t\t\t\t${this.localize.term('publicAccess_paMembersHelp')}\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t${this.localize.term('publicAccess_paGroups')}
\r\n\t\t\t\t\t${this.localize.term('publicAccess_paGroupsHelp')}\r\n\t\t\t\t
\r\n\t\t\t`;\r\n\t}\r\n\r\n\t// Second page when editing Restricting Public Access\r\n\trenderEditPage() {\r\n\t\treturn html`${this.renderMemberType()}\r\n\t\t\t

\r\n\t\t\t\t\r\n\t\t\t\t\tSelect the pages that contain login form and error messages\r\n\t\t\t\t\r\n\t\t\t

\r\n\t\t\t
\r\n\t\t\t\tLogin Page\r\n\t\t\t\t\r\n\t\t\t\t\t Choose the page that contains the login form \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\tError Page\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tUsed when people are logged on, but do not have access\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
`;\r\n\t}\r\n\r\n\trenderMemberType() {\r\n\t\treturn this._specific\r\n\t\t\t? html`\r\n\t\t\t\t\t\tSelect the members who have access to the page ${this._documentName}\r\n\t\t\t\t\t\r\n\t\t\t\t\t`\r\n\t\t\t: html`\r\n\t\t\t\t\t\tSelect the groups who have access to the page ${this._documentName}\r\n\t\t\t\t\t\r\n\t\t\t\t\t`;\r\n\t}\r\n\r\n\t// Action buttons\r\n\trenderActions() {\r\n\t\t// Check for Save or Next button\r\n\t\tconst confirm = !this._startPage\r\n\t\t\t? html``\r\n\t\t\t: html``;\r\n\t\t// Check for Remove button\r\n\t\tconst remove = !this.#isNew\r\n\t\t\t? html``\r\n\t\t\t: nothing;\r\n\t\t//Render the buttons\r\n\t\treturn html` ${remove}${confirm}`;\r\n\t}\r\n\r\n\tstatic override styles = [\r\n\t\tUmbTextStyles,\r\n\t\tcss`\r\n\t\t\tuui-box,\r\n\t\t\tuui-radio-group {\r\n\t\t\t\tdisplay: flex;\r\n\t\t\t\tflex-direction: column;\r\n\t\t\t\tgap: var(--uui-size-4);\r\n\t\t\t}\r\n\t\t\tuui-radio-group {\r\n\t\t\t\tmargin-top: var(--uui-size-4);\r\n\t\t\t}\r\n\r\n\t\t\tp {\r\n\t\t\t\tmargin: var(--uui-size-6) 0 var(--uui-size-2);\r\n\t\t\t}\r\n\t\t\tsmall {\r\n\t\t\t\tdisplay: block;\r\n\t\t\t}\r\n\t\t`,\r\n\t];\r\n}\r\n\r\nexport default UmbPublicAccessModalElement;\r\n\r\ndeclare global {\r\n\tinterface HTMLElementTagNameMap {\r\n\t\t'umb-public-access-modal': UmbPublicAccessModalElement;\r\n\t}\r\n}\r\n"],"names":["UmbDocumentPublicAccessServerDataSource","#host","host","unique","data","tryExecuteAndNotify","DocumentService","tryExecute","requestBody","UmbDocumentPublicAccessRepository","UmbControllerBase","#dataSource","#notificationContext","UMB_NOTIFICATION_CONTEXT","instance","error","notification","_publicAccessRepository","_unique","_isNew","_UmbPublicAccessModalElement_instances","getDocumentName_fn","getPublicAccessModel_fn","handleNext_fn","handleSave_fn","handleDelete_fn","handleCancel_fn","onChangeLoginPage_fn","onChangeErrorPage_fn","onChangeGroup_fn","onChangeMember_fn","UmbPublicAccessModalElement","UmbModalBaseElement","__privateAdd","__privateSet","__privateMethod","html","e","confirm","remove","__privateGet","nothing","UmbDocumentItemRepository","item","m","g","repo","UmbMemberDetailRepository","promises","memberId","memberUserNames","response","UmbMemberGroupItemRepository","groupNames","groupItem","UmbTextStyles","css","__decorateClass","state","customElement","UmbPublicAccessModalElement$1"],"mappings":"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"}