@things-factory/auth-ui 10.1.106 → 10.1.111
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-client/bootstrap.js +22 -1
- package/dist-client/bootstrap.js.map +1 -1
- package/dist-client/components/access-decision-popup.d.ts +30 -0
- package/dist-client/components/access-decision-popup.js +228 -0
- package/dist-client/components/access-decision-popup.js.map +1 -0
- package/dist-client/components/access-request-popup.d.ts +32 -0
- package/dist-client/components/access-request-popup.js +211 -0
- package/dist-client/components/access-request-popup.js.map +1 -0
- package/dist-client/components/user-detail.d.ts +2 -0
- package/dist-client/components/user-detail.js +18 -0
- package/dist-client/components/user-detail.js.map +1 -1
- package/dist-client/pages/access-request/access-requests.d.ts +51 -0
- package/dist-client/pages/access-request/access-requests.js +220 -0
- package/dist-client/pages/access-request/access-requests.js.map +1 -0
- package/dist-client/pages/access-request/my-access-requests.d.ts +26 -0
- package/dist-client/pages/access-request/my-access-requests.js +151 -0
- package/dist-client/pages/access-request/my-access-requests.js.map +1 -0
- package/dist-client/route.js +6 -0
- package/dist-client/route.js.map +1 -1
- package/dist-client/tsconfig.layout-check.tsbuildinfo +1 -0
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-client/utils/access-request.d.ts +49 -0
- package/dist-client/utils/access-request.js +67 -0
- package/dist-client/utils/access-request.js.map +1 -0
- package/dist-client/utils/access-request.test.d.ts +1 -0
- package/dist-client/utils/access-request.test.js +70 -0
- package/dist-client/utils/access-request.test.js.map +1 -0
- package/dist-client/utils/role-origin.d.ts +8 -0
- package/dist-client/utils/role-origin.js +10 -0
- package/dist-client/utils/role-origin.js.map +1 -1
- package/dist-client/utils/role-origin.test.js +7 -1
- package/dist-client/utils/role-origin.test.js.map +1 -1
- package/package.json +5 -5
- package/things-factory.config.js +3 -1
- package/translations/en.json +63 -1
- package/translations/ja.json +63 -1
- package/translations/ko.json +63 -1
- package/translations/ms.json +63 -1
- package/translations/zh.json +63 -1
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import '@operato/data-grist/ox-grist.js';
|
|
3
|
+
import gql from 'graphql-tag';
|
|
4
|
+
import { css, html } from 'lit';
|
|
5
|
+
import { customElement, property, query } from 'lit/decorators.js';
|
|
6
|
+
import { client, gqlContext } from '@operato/graphql';
|
|
7
|
+
import { i18next, localize } from '@operato/i18n';
|
|
8
|
+
import { OxPrompt } from '@operato/popup/ox-prompt.js';
|
|
9
|
+
import { PageView } from '@operato/shell';
|
|
10
|
+
import { CommonGristStyles, ScrollbarStyles, WorkSurfacePageStyles } from '@operato/styles';
|
|
11
|
+
import { isMobileDevice } from '@operato/utils';
|
|
12
|
+
import { privilegeWords } from '../../utils/access-request.js';
|
|
13
|
+
import { arrayFromResponse, listOutcome } from '../../utils/list-result.js';
|
|
14
|
+
/**
|
|
15
|
+
* The person's own access requests - what became of each (ADR-0103). A notification may not reach them;
|
|
16
|
+
* this does.
|
|
17
|
+
*/
|
|
18
|
+
let MyAccessRequestsPage = class MyAccessRequestsPage extends localize(i18next)(PageView) {
|
|
19
|
+
constructor() {
|
|
20
|
+
super(...arguments);
|
|
21
|
+
this.active = false;
|
|
22
|
+
this.failed = false;
|
|
23
|
+
}
|
|
24
|
+
static { this.styles = [
|
|
25
|
+
WorkSurfacePageStyles,
|
|
26
|
+
CommonGristStyles,
|
|
27
|
+
ScrollbarStyles,
|
|
28
|
+
css `
|
|
29
|
+
[failed] {
|
|
30
|
+
padding: var(--spacing-medium);
|
|
31
|
+
color: var(--md-sys-color-error);
|
|
32
|
+
}
|
|
33
|
+
`
|
|
34
|
+
]; }
|
|
35
|
+
get context() {
|
|
36
|
+
return { title: i18next.t('access-request.title.my access requests') };
|
|
37
|
+
}
|
|
38
|
+
render() {
|
|
39
|
+
return html `
|
|
40
|
+
<ox-grist class="page-fill" .mode=${isMobileDevice() ? 'CARD' : 'GRID'} .config=${this.config} .fetchHandler=${this.fetchHandler.bind(this)}></ox-grist>
|
|
41
|
+
${this.failed ? html `<div failed>${i18next.t('text.the list could not be loaded')}</div>` : ''}
|
|
42
|
+
`;
|
|
43
|
+
}
|
|
44
|
+
async pageInitialized() {
|
|
45
|
+
const t = i18next.t.bind(i18next);
|
|
46
|
+
this.config = {
|
|
47
|
+
pagination: { infinite: true },
|
|
48
|
+
rows: { appendable: false, selectable: false },
|
|
49
|
+
columns: [
|
|
50
|
+
{
|
|
51
|
+
type: 'gutter',
|
|
52
|
+
gutterName: 'button',
|
|
53
|
+
icon: 'undo',
|
|
54
|
+
title: t('access-request.button.withdraw'),
|
|
55
|
+
handlers: { click: (_c, _d, _col, record) => record?.state === 'PENDING' && this.withdraw(record) }
|
|
56
|
+
},
|
|
57
|
+
{ type: 'string', name: 'needed', header: t('access-request.field.needed'), record: { editable: false }, width: 260 },
|
|
58
|
+
{ type: 'string', name: 'stateWords', header: t('field.state'), record: { align: 'center', editable: false }, width: 100 },
|
|
59
|
+
{ type: 'string', name: 'grantedRoleName', header: t('access-request.field.granted role'), record: { editable: false }, width: 140 },
|
|
60
|
+
{ type: 'string', name: 'decisionReason', header: t('access-request.field.decision reason'), record: { editable: false }, width: 220 },
|
|
61
|
+
{ type: 'datetime', name: 'createdAt', header: t('field.created at'), width: 170 }
|
|
62
|
+
]
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
async pageUpdated(_changes, _lifecycle) {
|
|
66
|
+
if (this.active) {
|
|
67
|
+
await this.updateComplete;
|
|
68
|
+
this.grist.fetch();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
async withdraw(record) {
|
|
72
|
+
const confirmed = await OxPrompt.open({
|
|
73
|
+
type: 'warning',
|
|
74
|
+
title: i18next.t('access-request.button.withdraw'),
|
|
75
|
+
text: record.needed,
|
|
76
|
+
confirmButton: { text: i18next.t('access-request.button.withdraw') },
|
|
77
|
+
cancelButton: { text: i18next.t('button.cancel') }
|
|
78
|
+
});
|
|
79
|
+
if (!confirmed)
|
|
80
|
+
return;
|
|
81
|
+
await client.mutate({
|
|
82
|
+
mutation: gql `
|
|
83
|
+
mutation ($id: String!) {
|
|
84
|
+
withdrawAccessRequest(id: $id) {
|
|
85
|
+
id
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
`,
|
|
89
|
+
variables: { id: record.id },
|
|
90
|
+
context: gqlContext()
|
|
91
|
+
});
|
|
92
|
+
this.grist.fetch();
|
|
93
|
+
}
|
|
94
|
+
async fetchHandler() {
|
|
95
|
+
const response = await client.query({
|
|
96
|
+
query: gql `
|
|
97
|
+
query {
|
|
98
|
+
myAccessRequests {
|
|
99
|
+
id
|
|
100
|
+
category
|
|
101
|
+
privilege
|
|
102
|
+
state
|
|
103
|
+
expiresAt
|
|
104
|
+
createdAt
|
|
105
|
+
decisionReason
|
|
106
|
+
grantedRole {
|
|
107
|
+
name
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
`,
|
|
112
|
+
context: gqlContext(),
|
|
113
|
+
fetchPolicy: 'network-only'
|
|
114
|
+
});
|
|
115
|
+
const { items, failed } = listOutcome(arrayFromResponse(response, 'myAccessRequests'));
|
|
116
|
+
this.failed = failed;
|
|
117
|
+
const t = i18next.t.bind(i18next);
|
|
118
|
+
const records = items.map((item) => {
|
|
119
|
+
const state = item.state === 'PENDING' && item.expiresAt && new Date(item.expiresAt).getTime() <= Date.now() ? 'EXPIRED' : item.state;
|
|
120
|
+
return {
|
|
121
|
+
...item,
|
|
122
|
+
state,
|
|
123
|
+
stateWords: t(`access-request.state.${state.toLowerCase()}`),
|
|
124
|
+
needed: privilegeWords(t, item.category, item.privilege),
|
|
125
|
+
grantedRoleName: item.grantedRole?.name || ''
|
|
126
|
+
};
|
|
127
|
+
});
|
|
128
|
+
return { total: records.length, records };
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
__decorate([
|
|
132
|
+
property({ type: Boolean }),
|
|
133
|
+
__metadata("design:type", Boolean)
|
|
134
|
+
], MyAccessRequestsPage.prototype, "active", void 0);
|
|
135
|
+
__decorate([
|
|
136
|
+
property({ type: Object }),
|
|
137
|
+
__metadata("design:type", Object)
|
|
138
|
+
], MyAccessRequestsPage.prototype, "config", void 0);
|
|
139
|
+
__decorate([
|
|
140
|
+
property({ type: Boolean }),
|
|
141
|
+
__metadata("design:type", Boolean)
|
|
142
|
+
], MyAccessRequestsPage.prototype, "failed", void 0);
|
|
143
|
+
__decorate([
|
|
144
|
+
query('ox-grist'),
|
|
145
|
+
__metadata("design:type", Function)
|
|
146
|
+
], MyAccessRequestsPage.prototype, "grist", void 0);
|
|
147
|
+
MyAccessRequestsPage = __decorate([
|
|
148
|
+
customElement('my-access-requests-page')
|
|
149
|
+
], MyAccessRequestsPage);
|
|
150
|
+
export { MyAccessRequestsPage };
|
|
151
|
+
//# sourceMappingURL=my-access-requests.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"my-access-requests.js","sourceRoot":"","sources":["../../../client/pages/access-request/my-access-requests.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/data-grist/ox-grist.js'\n\nimport gql from 'graphql-tag'\nimport { css, html } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\n\nimport type { DataGrist } from '@operato/data-grist'\nimport { client, gqlContext } from '@operato/graphql'\nimport { i18next, localize } from '@operato/i18n'\nimport { OxPrompt } from '@operato/popup/ox-prompt.js'\nimport { PageView } from '@operato/shell'\nimport { CommonGristStyles, ScrollbarStyles, WorkSurfacePageStyles } from '@operato/styles'\nimport { isMobileDevice } from '@operato/utils'\n\nimport { privilegeWords } from '../../utils/access-request.js'\nimport { arrayFromResponse, listOutcome } from '../../utils/list-result.js'\n\n/**\n * The person's own access requests - what became of each (ADR-0103). A notification may not reach them;\n * this does.\n */\n@customElement('my-access-requests-page')\nexport class MyAccessRequestsPage extends localize(i18next)(PageView) {\n static styles = [\n WorkSurfacePageStyles,\n CommonGristStyles,\n ScrollbarStyles,\n css`\n [failed] {\n padding: var(--spacing-medium);\n color: var(--md-sys-color-error);\n }\n `\n ]\n\n @property({ type: Boolean }) active: boolean = false\n @property({ type: Object }) config: any\n @property({ type: Boolean }) failed: boolean = false\n\n @query('ox-grist') private grist!: DataGrist\n\n get context() {\n return { title: i18next.t('access-request.title.my access requests') }\n }\n\n render() {\n return html`\n <ox-grist class=\"page-fill\" .mode=${isMobileDevice() ? 'CARD' : 'GRID'} .config=${this.config} .fetchHandler=${this.fetchHandler.bind(this)}></ox-grist>\n ${this.failed ? html`<div failed>${i18next.t('text.the list could not be loaded')}</div>` : ''}\n `\n }\n\n async pageInitialized() {\n const t = i18next.t.bind(i18next)\n this.config = {\n pagination: { infinite: true },\n rows: { appendable: false, selectable: false },\n columns: [\n {\n type: 'gutter',\n gutterName: 'button',\n icon: 'undo',\n title: t('access-request.button.withdraw'),\n handlers: { click: (_c: any, _d: any, _col: any, record: any) => record?.state === 'PENDING' && this.withdraw(record) }\n },\n { type: 'string', name: 'needed', header: t('access-request.field.needed'), record: { editable: false }, width: 260 },\n { type: 'string', name: 'stateWords', header: t('field.state'), record: { align: 'center', editable: false }, width: 100 },\n { type: 'string', name: 'grantedRoleName', header: t('access-request.field.granted role'), record: { editable: false }, width: 140 },\n { type: 'string', name: 'decisionReason', header: t('access-request.field.decision reason'), record: { editable: false }, width: 220 },\n { type: 'datetime', name: 'createdAt', header: t('field.created at'), width: 170 }\n ]\n }\n }\n\n async pageUpdated(_changes: any, _lifecycle: any) {\n if (this.active) {\n await this.updateComplete\n this.grist.fetch()\n }\n }\n\n private async withdraw(record: any) {\n const confirmed = await OxPrompt.open({\n type: 'warning',\n title: i18next.t('access-request.button.withdraw'),\n text: record.needed,\n confirmButton: { text: i18next.t('access-request.button.withdraw') },\n cancelButton: { text: i18next.t('button.cancel') }\n })\n if (!confirmed) return\n\n await client.mutate({\n mutation: gql`\n mutation ($id: String!) {\n withdrawAccessRequest(id: $id) {\n id\n }\n }\n `,\n variables: { id: record.id },\n context: gqlContext()\n })\n this.grist.fetch()\n }\n\n async fetchHandler() {\n const response = await client.query({\n query: gql`\n query {\n myAccessRequests {\n id\n category\n privilege\n state\n expiresAt\n createdAt\n decisionReason\n grantedRole {\n name\n }\n }\n }\n `,\n context: gqlContext(),\n fetchPolicy: 'network-only'\n })\n const { items, failed } = listOutcome(arrayFromResponse(response, 'myAccessRequests'))\n this.failed = failed\n const t = i18next.t.bind(i18next)\n const records = items.map((item: any) => {\n const state = item.state === 'PENDING' && item.expiresAt && new Date(item.expiresAt).getTime() <= Date.now() ? 'EXPIRED' : item.state\n return {\n ...item,\n state,\n stateWords: t(`access-request.state.${state.toLowerCase()}`),\n needed: privilegeWords(t, item.category, item.privilege),\n grantedRoleName: item.grantedRole?.name || ''\n }\n })\n return { total: records.length, records }\n }\n}\n"]}
|
package/dist-client/route.js
CHANGED
|
@@ -48,6 +48,12 @@ export default function route(page) {
|
|
|
48
48
|
case 'domain-links':
|
|
49
49
|
import('./pages/domain-link/domain-link-management.js');
|
|
50
50
|
return page;
|
|
51
|
+
case 'access-requests':
|
|
52
|
+
import('./pages/access-request/access-requests.js');
|
|
53
|
+
return page;
|
|
54
|
+
case 'my-access-requests':
|
|
55
|
+
import('./pages/access-request/my-access-requests.js');
|
|
56
|
+
return page;
|
|
51
57
|
}
|
|
52
58
|
}
|
|
53
59
|
//# sourceMappingURL=route.js.map
|
package/dist-client/route.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../client/route.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,IAAI;IAChC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS;YACZ,MAAM;YACJ,2BAA2B;YAC3B,iCAAiC;YACjC,oBAAoB,CACrB,CAAA;YACD,OAAO,IAAI,CAAA;QAEb,KAAK,cAAc;YACjB,MAAM,CAAC,kCAAkC,CAAC,CAAA;YAC1C,OAAO,IAAI,CAAA;QAEb,KAAK,cAAc;YACjB,MAAM,CAAC,kCAAkC,CAAC,CAAA;YAC1C,OAAO,IAAI,CAAA;QAEb,KAAK,gBAAgB;YACnB,MAAM,CAAC,wBAAwB,CAAC,CAAA;YAChC,OAAO,IAAI,CAAA;QAEb,KAAK,OAAO;YACV,MAAM,CAAC,6BAA6B,CAAC,CAAA;YACrC,OAAO,IAAI,CAAA;QAEb,KAAK,iBAAiB;YACpB,MAAM,CAAC,kCAAkC,CAAC,CAAA;YAC1C,OAAO,IAAI,CAAA;QAEb,KAAK,OAAO;YACV,MAAM,CAAC,6BAA6B,CAAC,CAAA;YACrC,OAAO,IAAI,CAAA;QAEb,KAAK,aAAa;YAChB,MAAM,CAAC,gCAAgC,CAAC,CAAA;YACxC,OAAO,IAAI,CAAA;QAEb,KAAK,UAAU;YACb,MAAM,CAAC,oCAAoC,CAAC,CAAA;YAC5C,OAAO,IAAI,CAAA;QAEb,KAAK,SAAS;YACZ,MAAM,CAAC,kCAAkC,CAAC,CAAA;YAC1C,OAAO,IAAI,CAAA;QAEb,KAAK,eAAe;YAClB,MAAM,CAAC,8CAA8C,CAAC,CAAA;YACtD,OAAO,IAAI,CAAA;QAEb,KAAK,UAAU;YACb,MAAM,CAAC,mCAAmC,CAAC,CAAA;YAC3C,OAAO,IAAI,CAAA;QAEb,KAAK,YAAY;YACf,MAAM,CAAC,+CAA+C,CAAC,CAAA;YACvD,OAAO,IAAI,CAAA;QAEb,KAAK,gBAAgB;YACnB,MAAM,CAAC,mDAAmD,CAAC,CAAA;YAC3D,OAAO,IAAI,CAAA;QAEb,KAAK,cAAc;YACjB,MAAM,CAAC,+CAA+C,CAAC,CAAA;YACvD,OAAO,IAAI,CAAA;IACf,CAAC;AACH,CAAC","sourcesContent":["export default function route(page) {\n switch (page) {\n case 'profile':\n import(\n /* webpackPrefetch: true */\n /* webpackChunkName: \"profile\" */\n './pages/profile.js'\n )\n return page\n\n case 'applications':\n import('./pages/application/applications')\n return page\n\n case 'app-bindings':\n import('./pages/app-binding/app-bindings')\n return page\n\n case 'appliance-home':\n import('./pages/appliance/home')\n return page\n\n case 'roles':\n import('./pages/role/role-list-page')\n return page\n\n case 'role-privileges':\n import('./pages/role/role-privilege-page')\n return page\n\n case 'users':\n import('./pages/user/user-list-page')\n return page\n\n case 'invitations':\n import('./pages/invitation/invitations')\n return page\n\n case 'partners':\n import('./pages/partner/partner-management')\n return page\n\n case 'domains':\n import('./pages/domain/domain-management')\n return page\n\n case 'domain-owners':\n import('./pages/domain-owner/domain-owner-management')\n return page\n\n case 'env-vars':\n import('./pages/env-var/env-var-list-page')\n return page\n\n case 'attributes':\n import('./pages/attribute/attribute-set-management.js')\n return page\n\n case 'auth-providers':\n import('./pages/auth-provider/auth-provider-management.js')\n return page\n\n case 'domain-links':\n import('./pages/domain-link/domain-link-management.js')\n return page\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../client/route.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,IAAI;IAChC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS;YACZ,MAAM;YACJ,2BAA2B;YAC3B,iCAAiC;YACjC,oBAAoB,CACrB,CAAA;YACD,OAAO,IAAI,CAAA;QAEb,KAAK,cAAc;YACjB,MAAM,CAAC,kCAAkC,CAAC,CAAA;YAC1C,OAAO,IAAI,CAAA;QAEb,KAAK,cAAc;YACjB,MAAM,CAAC,kCAAkC,CAAC,CAAA;YAC1C,OAAO,IAAI,CAAA;QAEb,KAAK,gBAAgB;YACnB,MAAM,CAAC,wBAAwB,CAAC,CAAA;YAChC,OAAO,IAAI,CAAA;QAEb,KAAK,OAAO;YACV,MAAM,CAAC,6BAA6B,CAAC,CAAA;YACrC,OAAO,IAAI,CAAA;QAEb,KAAK,iBAAiB;YACpB,MAAM,CAAC,kCAAkC,CAAC,CAAA;YAC1C,OAAO,IAAI,CAAA;QAEb,KAAK,OAAO;YACV,MAAM,CAAC,6BAA6B,CAAC,CAAA;YACrC,OAAO,IAAI,CAAA;QAEb,KAAK,aAAa;YAChB,MAAM,CAAC,gCAAgC,CAAC,CAAA;YACxC,OAAO,IAAI,CAAA;QAEb,KAAK,UAAU;YACb,MAAM,CAAC,oCAAoC,CAAC,CAAA;YAC5C,OAAO,IAAI,CAAA;QAEb,KAAK,SAAS;YACZ,MAAM,CAAC,kCAAkC,CAAC,CAAA;YAC1C,OAAO,IAAI,CAAA;QAEb,KAAK,eAAe;YAClB,MAAM,CAAC,8CAA8C,CAAC,CAAA;YACtD,OAAO,IAAI,CAAA;QAEb,KAAK,UAAU;YACb,MAAM,CAAC,mCAAmC,CAAC,CAAA;YAC3C,OAAO,IAAI,CAAA;QAEb,KAAK,YAAY;YACf,MAAM,CAAC,+CAA+C,CAAC,CAAA;YACvD,OAAO,IAAI,CAAA;QAEb,KAAK,gBAAgB;YACnB,MAAM,CAAC,mDAAmD,CAAC,CAAA;YAC3D,OAAO,IAAI,CAAA;QAEb,KAAK,cAAc;YACjB,MAAM,CAAC,+CAA+C,CAAC,CAAA;YACvD,OAAO,IAAI,CAAA;QAEb,KAAK,iBAAiB;YACpB,MAAM,CAAC,2CAA2C,CAAC,CAAA;YACnD,OAAO,IAAI,CAAA;QAEb,KAAK,oBAAoB;YACvB,MAAM,CAAC,8CAA8C,CAAC,CAAA;YACtD,OAAO,IAAI,CAAA;IACf,CAAC;AACH,CAAC","sourcesContent":["export default function route(page) {\n switch (page) {\n case 'profile':\n import(\n /* webpackPrefetch: true */\n /* webpackChunkName: \"profile\" */\n './pages/profile.js'\n )\n return page\n\n case 'applications':\n import('./pages/application/applications')\n return page\n\n case 'app-bindings':\n import('./pages/app-binding/app-bindings')\n return page\n\n case 'appliance-home':\n import('./pages/appliance/home')\n return page\n\n case 'roles':\n import('./pages/role/role-list-page')\n return page\n\n case 'role-privileges':\n import('./pages/role/role-privilege-page')\n return page\n\n case 'users':\n import('./pages/user/user-list-page')\n return page\n\n case 'invitations':\n import('./pages/invitation/invitations')\n return page\n\n case 'partners':\n import('./pages/partner/partner-management')\n return page\n\n case 'domains':\n import('./pages/domain/domain-management')\n return page\n\n case 'domain-owners':\n import('./pages/domain-owner/domain-owner-management')\n return page\n\n case 'env-vars':\n import('./pages/env-var/env-var-list-page')\n return page\n\n case 'attributes':\n import('./pages/attribute/attribute-set-management.js')\n return page\n\n case 'auth-providers':\n import('./pages/auth-provider/auth-provider-management.js')\n return page\n\n case 'domain-links':\n import('./pages/domain-link/domain-link-management.js')\n return page\n\n case 'access-requests':\n import('./pages/access-request/access-requests.js')\n return page\n\n case 'my-access-requests':\n import('./pages/access-request/my-access-requests.js')\n return page\n }\n}\n"]}
|