@things-factory/auth-ui 7.0.1-rc.0 → 7.0.1-rc.10
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/client/auth-style-sign.ts +2 -1
- package/client/components/abstract-sign.ts +30 -72
- package/client/components/contact-us.ts +0 -4
- package/client/components/delete-user-popup.ts +1 -0
- package/client/components/partner-role-editor.ts +0 -4
- package/client/components/profile-component.ts +27 -91
- package/client/components/role-privilege-editor.ts +0 -3
- package/client/components/user-role-editor.ts +0 -4
- package/client/entries/auth/activate.ts +4 -5
- package/client/entries/auth/checkin.ts +5 -2
- package/client/entries/auth/result.ts +5 -3
- package/client/entries/oauth2/oauth2-decision-page.ts +0 -4
- package/client/pages/app-binding/app-binding.ts +38 -22
- package/client/pages/app-binding/app-bindings.ts +20 -1
- package/client/pages/appliance/appliance.ts +75 -18
- package/client/pages/appliance/home.ts +23 -1
- package/client/pages/application/application.ts +93 -40
- package/client/pages/application/applications.ts +19 -1
- package/dist-client/auth-style-sign.js +2 -1
- package/dist-client/auth-style-sign.js.map +1 -1
- package/dist-client/components/abstract-sign.d.ts +1 -1
- package/dist-client/components/abstract-sign.js +26 -60
- package/dist-client/components/abstract-sign.js.map +1 -1
- package/dist-client/components/contact-us.js +0 -4
- package/dist-client/components/contact-us.js.map +1 -1
- package/dist-client/components/delete-user-popup.js +1 -0
- package/dist-client/components/delete-user-popup.js.map +1 -1
- package/dist-client/components/partner-role-editor.js +0 -4
- package/dist-client/components/partner-role-editor.js.map +1 -1
- package/dist-client/components/profile-component.d.ts +1 -1
- package/dist-client/components/profile-component.js +25 -80
- package/dist-client/components/profile-component.js.map +1 -1
- package/dist-client/components/role-privilege-editor.js +0 -3
- package/dist-client/components/role-privilege-editor.js.map +1 -1
- package/dist-client/components/user-role-editor.js +0 -4
- package/dist-client/components/user-role-editor.js.map +1 -1
- package/dist-client/entries/auth/activate.js +4 -5
- package/dist-client/entries/auth/activate.js.map +1 -1
- package/dist-client/entries/auth/checkin.js +5 -2
- package/dist-client/entries/auth/checkin.js.map +1 -1
- package/dist-client/entries/auth/result.js +5 -3
- package/dist-client/entries/auth/result.js.map +1 -1
- package/dist-client/entries/oauth2/oauth2-decision-page.js +0 -4
- package/dist-client/entries/oauth2/oauth2-decision-page.js.map +1 -1
- package/dist-client/pages/app-binding/app-binding.js +38 -22
- package/dist-client/pages/app-binding/app-binding.js.map +1 -1
- package/dist-client/pages/app-binding/app-bindings.d.ts +2 -1
- package/dist-client/pages/app-binding/app-bindings.js +19 -1
- package/dist-client/pages/app-binding/app-bindings.js.map +1 -1
- package/dist-client/pages/appliance/appliance.js +75 -18
- package/dist-client/pages/appliance/appliance.js.map +1 -1
- package/dist-client/pages/appliance/home.d.ts +2 -1
- package/dist-client/pages/appliance/home.js +22 -1
- package/dist-client/pages/appliance/home.js.map +1 -1
- package/dist-client/pages/application/application.js +93 -40
- package/dist-client/pages/application/application.js.map +1 -1
- package/dist-client/pages/application/applications.d.ts +2 -1
- package/dist-client/pages/application/applications.js +18 -1
- package/dist-client/pages/application/applications.js.map +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-role-editor.js","sourceRoot":"","sources":["../../client/components/user-role-editor.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport '@material/web/button/elevated-button.js'\n\nimport './ownership-transfer-popup'\nimport './role-selector'\n\nimport gql from 'graphql-tag'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { connect } from 'pwa-helpers/connect-mixin'\n\nimport { client, gqlContext } from '@operato/graphql'\nimport { i18next } from '@operato/i18n'\nimport { openPopup } from '@operato/layout'\nimport { store } from '@operato/shell'\nimport { OxPrompt } from '@operato/popup/ox-prompt.js'\nimport { ButtonContainerStyles } from '@operato/styles'\nimport { RoleSelector } from './role-selector'\n\n@customElement('user-role-editor')\nclass UserRoleEditor extends connect(store)(LitElement) {\n static styles = [\n ButtonContainerStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n\n border: 1px solid var(--md-sys-color-primary);\n font: normal 15px var(--theme-font);\n color: var(--md-sys-color-secondary);\n }\n ul {\n flex: 1;\n display: grid;\n grid-template-columns: 1fr 1fr;\n column-gap: 20px;\n\n overflow: auto;\n margin: 0;\n padding: var(--padding-default);\n list-style: none;\n border: 1px dashed rgba(0, 0, 0, 0.1);\n border-width: 1px 0;\n }\n input[readonly] {\n border: none;\n background-color: transparent;\n color: var(--md-sys-color-secondary);\n font: var(--input-font);\n }\n li {\n padding: var(--padding-narrow);\n }\n [detail] {\n background-color: var(--md-sys-color-surface);\n }\n [detail] md-icon {\n --md-icon-size: var(--fontsize-default);\n vertical-align: middle;\n color: var(--md-sys-color-primary);\n }\n [detail] li {\n display: flex;\n }\n [detail] li input {\n flex: 1;\n }\n\n md-elevated-button {\n margin: 5px;\n }\n\n [danger] {\n --md-theme-primary: var(--md-danger-button-primary-color);\n }\n\n md-outlined-button {\n background-color: var(--md-sys-color-surface-variant);\n }\n\n @media screen and (max-width: 480px) {\n ul {\n grid-template-columns: 1fr;\n }\n }\n `\n ]\n\n @property({ type: Object }) user: any = {}\n @property({ type: Boolean }) activate: boolean = false\n @property({ type: Object }) domainOwner: any\n\n @state() domainRoles: any[] = []\n @state() grantedRoles: any = {}\n @state() userRoles: any[] = []\n @state() isSuperOwner: boolean = false\n @state() isDomainOwner: boolean = false\n\n private me: any\n\n render() {\n const user = this.user || {}\n const domainRoles = this.domainRoles || []\n const grantedRoles = this.grantedRoles || {}\n let currentDomainName = 'roles'\n if (domainRoles?.length) {\n currentDomainName = domainRoles[0].domain.name\n }\n\n return html`\n ${this.activate\n ? html`\n <ul detail>\n ${user.userType === 'user'\n ? html`\n <li>\n <span>\n <md-icon>email</md-icon>\n ${user.email}\n </span>\n </li>\n `\n : ''}\n </ul>\n\n <role-selector .user=${this.user} .roles=${domainRoles} .userRoles=${this.userRoles}></role-selector>\n\n ${Object.keys(grantedRoles).map(\n partnerName => html`\n <role-selector\n .roleCategory=${partnerName}\n .user=${this.user}\n .roles=${this.grantedRoles[partnerName]}\n .userRoles=${this.userRoles}\n >\n </role-selector>\n `\n )}\n `\n : ''}\n\n <div class=\"button-container\">\n ${this.isRoleEditable()\n ? html` <md-elevated-button\n @click=${() => {\n const { availableRoles, selectedRoles } = Array.from(\n this.renderRoot.querySelectorAll('role-selector') as NodeListOf<RoleSelector>\n ).reduce(\n (roles, roleSelector) => {\n roles.availableRoles = roles.availableRoles.concat(\n roleSelector.roles.map(r => {\n delete r.domain\n return r\n })\n )\n roles.selectedRoles = roles.selectedRoles.concat(\n roleSelector.selectedRoles().map(r => {\n //@ts-ignore\n delete r.domain\n return r\n })\n )\n return roles\n },\n { availableRoles: [], selectedRoles: [] } as { availableRoles: any[]; selectedRoles: any[] }\n )\n this.onSave(user, availableRoles, selectedRoles)\n }}\n >${String(i18next.t('button.save'))}</md-elevated-button\n >`\n : ''}\n ${user.userType === 'user'\n ? html`\n ${this.isTransferable(user)\n ? html`\n <md-elevated-button danger @click=${() => this.onTransfer(user)}\n >${String(i18next.t('button.transfer owner'))}</md-elevated-button\n >\n `\n : ''}\n ${this.isPasswordResettable(user)\n ? html`<md-elevated-button danger @click=${() => this.onResetPassword(user)}\n >${String(i18next.t('title.reset password'))}</md-elevated-button\n >`\n : ''}\n `\n : ''}\n ${this.isRemovable(user)\n ? html`\n <md-elevated-button danger @click=${() => this.onDelete(user)}\n >${String(i18next.t('button.delete user'))}</md-elevated-button\n >\n `\n : ''}\n ${this.isActivatable(user)\n ? html`<md-elevated-button danger @click=${() => this.onActivate(user)}\n >${String(i18next.t('button.activate'))}</md-elevated-button\n >`\n : ''}\n ${this.isInactivatable(user)\n ? html`<md-elevated-button danger @click=${() => this.onInactivate(user)}\n >${String(i18next.t('button.deactivate'))}</md-elevated-button\n >`\n : ''}\n </div>\n `\n }\n\n isRemovable(user) {\n return this.isDomainOwner && user.email !== this.me.email && !user.owner\n }\n\n isTransferable(user) {\n return (this.isSuperOwner || this.isDomainOwner) && !user.owner\n }\n\n isRoleEditable() {\n return this.activate && (this.domainRoles?.length || Object.keys(this.grantedRoles || {}).length)\n }\n\n isPasswordResettable(user) {\n return (this.isSuperOwner || this.isDomainOwner) && user.email !== this.me.email\n }\n\n isActivatable(user) {\n return (this.isSuperOwner || this.isDomainOwner) && !this.activate\n }\n\n isInactivatable(user) {\n return (\n (this.isSuperOwner || this.isDomainOwner) &&\n user.id !== this.domainOwner.id &&\n user.userType !== 'admin' &&\n this.activate\n )\n }\n\n async updated(changedProps) {\n if (changedProps.has('user')) {\n this.fetchAvailableRoles()\n\n if (this.user?.email) {\n this.userRoles = await this.fetchRolesOnUser(this.user.email)\n } else {\n this.userRoles = []\n }\n }\n }\n\n async fetchRolesOnUser(email) {\n const response = await client.query({\n query: gql`\n query ($email: EmailAddress!) {\n user(email: $email) {\n id\n name\n email\n roles {\n id\n name\n description\n domain {\n id\n }\n }\n }\n }\n `,\n variables: { email },\n context: gqlContext()\n })\n\n if (!response.errors) {\n return response.data.user?.roles || []\n }\n }\n\n async fetchAvailableRoles() {\n const response = await client.query({\n query: gql`\n query {\n roles {\n items {\n id\n domain {\n name\n }\n name\n description\n }\n total\n }\n grantedRoles {\n id\n role {\n id\n name\n description\n domain {\n name\n }\n }\n }\n }\n `,\n context: gqlContext()\n })\n\n if (!response.errors?.length) {\n this.domainRoles = response.data.roles.items || []\n this.grantedRoles = response.data.grantedRoles.reduce((grantedRoles, grantedRole) => {\n const { role } = grantedRole\n const { domain } = role\n if (grantedRoles[domain.name]) {\n grantedRoles[domain.name].push(role)\n } else {\n grantedRoles[domain.name] = [role]\n }\n\n return grantedRoles\n }, {})\n } else {\n this.domainRoles = []\n this.grantedRoles = []\n }\n }\n\n async onSave(user, availableRoles, selectedRoles) {\n if (user?.id) {\n const response = await client.mutate({\n mutation: gql`\n mutation ($userId: String!, $availableRoles: [ObjectRef!]!, $selectedRoles: [ObjectRef!]!) {\n updateUserRoles(userId: $userId, availableRoles: $availableRoles, selectedRoles: $selectedRoles) {\n id\n name\n roles {\n id\n description\n }\n }\n }\n `,\n variables: { userId: user.id, availableRoles, selectedRoles },\n context: gqlContext()\n })\n\n if (!response.errors) {\n this.showToast(i18next.t('text.data_updated_successfully'))\n this.dispatchUserUpdated()\n }\n }\n }\n\n async onActivate(user) {\n const response = await client.mutate({\n mutation: gql`\n mutation activateUser($userId: String!) {\n activateUser(userId: $userId)\n }\n `,\n variables: { userId: user.id },\n context: gqlContext()\n })\n\n if (!response.errors) {\n this.showToast(i18next.t('text.user activated successfully'))\n\n this.dispatchUserUpdated()\n }\n }\n\n async onInactivate(user) {\n const response = await client.mutate({\n mutation: gql`\n mutation inactivateUser($userId: String!) {\n inactivateUser(userId: $userId)\n }\n `,\n variables: { userId: user.id },\n context: gqlContext()\n })\n\n if (!response.errors) {\n this.showToast(i18next.t('text.user activated successfully'))\n\n this.dispatchUserUpdated()\n }\n }\n\n async onDelete(user) {\n if (user.owner) {\n await OxPrompt.open({\n type: 'warning',\n title: i18next.t('text.cannot_delete'),\n text: i18next.t('text.x_cannot_delete', {\n x: i18next.t('label.domain-owner')\n }),\n confirmButton: { text: i18next.t('button.confirm') }\n })\n\n return\n }\n\n if (\n await OxPrompt.open({\n title: i18next.t('text.are_you_sure'),\n text: i18next.t('text.are_you_sure_to_x_user', {\n x: i18next.t('button.delete')\n }),\n confirmButton: { text: i18next.t('button.delete') },\n cancelButton: { text: i18next.t('button.cancel') }\n })\n ) {\n const response = await client.mutate({\n mutation: gql`\n mutation deleteDomaineUser($email: EmailAddress!) {\n deleteDomainUser(email: $email)\n }\n `,\n variables: { email: user.email },\n context: gqlContext()\n })\n\n if (!response.errors) {\n await OxPrompt.open({\n type: 'success',\n title: i18next.t('text.completed'),\n confirmButton: { text: i18next.t('button.confirm') }\n })\n\n this.dispatchUserUpdated()\n }\n }\n }\n\n async onTransfer(user) {\n openPopup(\n html`\n <ownership-transfer-popup\n .user=${user}\n @ownershipTransferred=\"${this.dispatchOwnershipTransferred.bind(this)}\"\n ></ownership-transfer-popup>\n `,\n {\n size: 'small',\n title: `${i18next.t('title.owner_transfer')}`\n }\n )\n }\n\n async onResetPassword(user) {\n if (\n await OxPrompt.open({\n title: i18next.t('text.are_you_sure'),\n text: i18next.t('text.are_you_sure_to_x', { x: i18next.t('title.reset password') }),\n confirmButton: { text: i18next.t('button.confirm') },\n cancelButton: { text: i18next.t('button.cancel') }\n })\n ) {\n const response = await client.mutate({\n mutation: gql`\n mutation resetPasswordToDefault($userId: String!) {\n resetPasswordToDefault(userId: $userId)\n }\n `,\n variables: { userId: user.id },\n context: gqlContext()\n })\n\n if (!response.errors) {\n await OxPrompt.open({\n type: 'success',\n title: i18next.t('text.completed'),\n text: i18next.t('text.password reset succeed'),\n confirmButton: { text: i18next.t('button.confirm') }\n })\n }\n }\n }\n\n dispatchUserUpdated() {\n this.dispatchEvent(new CustomEvent('userUpdated'))\n }\n\n dispatchOwnershipTransferred() {\n this.dispatchEvent(new CustomEvent('ownershipTransferred'))\n }\n\n showToast(message) {\n document.dispatchEvent(new CustomEvent('notify', { detail: { message, option: { timer: 1000 } } }))\n }\n\n stateChanged(state) {\n this.me = state.auth?.user || {}\n this.isSuperOwner = this.me.super || false\n this.isDomainOwner = this.me.email === this.domainOwner.email || false\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"user-role-editor.js","sourceRoot":"","sources":["../../client/components/user-role-editor.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport '@material/web/button/elevated-button.js'\n\nimport './ownership-transfer-popup'\nimport './role-selector'\n\nimport gql from 'graphql-tag'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { connect } from 'pwa-helpers/connect-mixin'\n\nimport { client, gqlContext } from '@operato/graphql'\nimport { i18next } from '@operato/i18n'\nimport { openPopup } from '@operato/layout'\nimport { store } from '@operato/shell'\nimport { OxPrompt } from '@operato/popup/ox-prompt.js'\nimport { ButtonContainerStyles } from '@operato/styles'\nimport { RoleSelector } from './role-selector'\n\n@customElement('user-role-editor')\nclass UserRoleEditor extends connect(store)(LitElement) {\n static styles = [\n ButtonContainerStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n\n border: 1px solid var(--md-sys-color-primary);\n font: normal 15px var(--theme-font);\n color: var(--md-sys-color-secondary);\n }\n ul {\n flex: 1;\n display: grid;\n grid-template-columns: 1fr 1fr;\n column-gap: 20px;\n\n overflow: auto;\n margin: 0;\n padding: var(--padding-default);\n list-style: none;\n border: 1px dashed rgba(0, 0, 0, 0.1);\n border-width: 1px 0;\n }\n input[readonly] {\n border: none;\n background-color: transparent;\n color: var(--md-sys-color-secondary);\n font: var(--input-font);\n }\n li {\n padding: var(--padding-narrow);\n }\n [detail] {\n background-color: var(--md-sys-color-surface);\n }\n [detail] md-icon {\n --md-icon-size: var(--fontsize-default);\n vertical-align: middle;\n color: var(--md-sys-color-primary);\n }\n [detail] li {\n display: flex;\n }\n [detail] li input {\n flex: 1;\n }\n\n md-elevated-button {\n margin: 5px;\n }\n\n md-outlined-button {\n background-color: var(--md-sys-color-surface-variant);\n }\n\n @media screen and (max-width: 480px) {\n ul {\n grid-template-columns: 1fr;\n }\n }\n `\n ]\n\n @property({ type: Object }) user: any = {}\n @property({ type: Boolean }) activate: boolean = false\n @property({ type: Object }) domainOwner: any\n\n @state() domainRoles: any[] = []\n @state() grantedRoles: any = {}\n @state() userRoles: any[] = []\n @state() isSuperOwner: boolean = false\n @state() isDomainOwner: boolean = false\n\n private me: any\n\n render() {\n const user = this.user || {}\n const domainRoles = this.domainRoles || []\n const grantedRoles = this.grantedRoles || {}\n let currentDomainName = 'roles'\n if (domainRoles?.length) {\n currentDomainName = domainRoles[0].domain.name\n }\n\n return html`\n ${this.activate\n ? html`\n <ul detail>\n ${user.userType === 'user'\n ? html`\n <li>\n <span>\n <md-icon>email</md-icon>\n ${user.email}\n </span>\n </li>\n `\n : ''}\n </ul>\n\n <role-selector .user=${this.user} .roles=${domainRoles} .userRoles=${this.userRoles}></role-selector>\n\n ${Object.keys(grantedRoles).map(\n partnerName => html`\n <role-selector\n .roleCategory=${partnerName}\n .user=${this.user}\n .roles=${this.grantedRoles[partnerName]}\n .userRoles=${this.userRoles}\n >\n </role-selector>\n `\n )}\n `\n : ''}\n\n <div class=\"button-container\">\n ${this.isRoleEditable()\n ? html` <md-elevated-button\n @click=${() => {\n const { availableRoles, selectedRoles } = Array.from(\n this.renderRoot.querySelectorAll('role-selector') as NodeListOf<RoleSelector>\n ).reduce(\n (roles, roleSelector) => {\n roles.availableRoles = roles.availableRoles.concat(\n roleSelector.roles.map(r => {\n delete r.domain\n return r\n })\n )\n roles.selectedRoles = roles.selectedRoles.concat(\n roleSelector.selectedRoles().map(r => {\n //@ts-ignore\n delete r.domain\n return r\n })\n )\n return roles\n },\n { availableRoles: [], selectedRoles: [] } as { availableRoles: any[]; selectedRoles: any[] }\n )\n this.onSave(user, availableRoles, selectedRoles)\n }}\n >${String(i18next.t('button.save'))}</md-elevated-button\n >`\n : ''}\n ${user.userType === 'user'\n ? html`\n ${this.isTransferable(user)\n ? html`\n <md-elevated-button danger @click=${() => this.onTransfer(user)}\n >${String(i18next.t('button.transfer owner'))}</md-elevated-button\n >\n `\n : ''}\n ${this.isPasswordResettable(user)\n ? html`<md-elevated-button danger @click=${() => this.onResetPassword(user)}\n >${String(i18next.t('title.reset password'))}</md-elevated-button\n >`\n : ''}\n `\n : ''}\n ${this.isRemovable(user)\n ? html`\n <md-elevated-button danger @click=${() => this.onDelete(user)}\n >${String(i18next.t('button.delete user'))}</md-elevated-button\n >\n `\n : ''}\n ${this.isActivatable(user)\n ? html`<md-elevated-button danger @click=${() => this.onActivate(user)}\n >${String(i18next.t('button.activate'))}</md-elevated-button\n >`\n : ''}\n ${this.isInactivatable(user)\n ? html`<md-elevated-button danger @click=${() => this.onInactivate(user)}\n >${String(i18next.t('button.deactivate'))}</md-elevated-button\n >`\n : ''}\n </div>\n `\n }\n\n isRemovable(user) {\n return this.isDomainOwner && user.email !== this.me.email && !user.owner\n }\n\n isTransferable(user) {\n return (this.isSuperOwner || this.isDomainOwner) && !user.owner\n }\n\n isRoleEditable() {\n return this.activate && (this.domainRoles?.length || Object.keys(this.grantedRoles || {}).length)\n }\n\n isPasswordResettable(user) {\n return (this.isSuperOwner || this.isDomainOwner) && user.email !== this.me.email\n }\n\n isActivatable(user) {\n return (this.isSuperOwner || this.isDomainOwner) && !this.activate\n }\n\n isInactivatable(user) {\n return (\n (this.isSuperOwner || this.isDomainOwner) &&\n user.id !== this.domainOwner.id &&\n user.userType !== 'admin' &&\n this.activate\n )\n }\n\n async updated(changedProps) {\n if (changedProps.has('user')) {\n this.fetchAvailableRoles()\n\n if (this.user?.email) {\n this.userRoles = await this.fetchRolesOnUser(this.user.email)\n } else {\n this.userRoles = []\n }\n }\n }\n\n async fetchRolesOnUser(email) {\n const response = await client.query({\n query: gql`\n query ($email: EmailAddress!) {\n user(email: $email) {\n id\n name\n email\n roles {\n id\n name\n description\n domain {\n id\n }\n }\n }\n }\n `,\n variables: { email },\n context: gqlContext()\n })\n\n if (!response.errors) {\n return response.data.user?.roles || []\n }\n }\n\n async fetchAvailableRoles() {\n const response = await client.query({\n query: gql`\n query {\n roles {\n items {\n id\n domain {\n name\n }\n name\n description\n }\n total\n }\n grantedRoles {\n id\n role {\n id\n name\n description\n domain {\n name\n }\n }\n }\n }\n `,\n context: gqlContext()\n })\n\n if (!response.errors?.length) {\n this.domainRoles = response.data.roles.items || []\n this.grantedRoles = response.data.grantedRoles.reduce((grantedRoles, grantedRole) => {\n const { role } = grantedRole\n const { domain } = role\n if (grantedRoles[domain.name]) {\n grantedRoles[domain.name].push(role)\n } else {\n grantedRoles[domain.name] = [role]\n }\n\n return grantedRoles\n }, {})\n } else {\n this.domainRoles = []\n this.grantedRoles = []\n }\n }\n\n async onSave(user, availableRoles, selectedRoles) {\n if (user?.id) {\n const response = await client.mutate({\n mutation: gql`\n mutation ($userId: String!, $availableRoles: [ObjectRef!]!, $selectedRoles: [ObjectRef!]!) {\n updateUserRoles(userId: $userId, availableRoles: $availableRoles, selectedRoles: $selectedRoles) {\n id\n name\n roles {\n id\n description\n }\n }\n }\n `,\n variables: { userId: user.id, availableRoles, selectedRoles },\n context: gqlContext()\n })\n\n if (!response.errors) {\n this.showToast(i18next.t('text.data_updated_successfully'))\n this.dispatchUserUpdated()\n }\n }\n }\n\n async onActivate(user) {\n const response = await client.mutate({\n mutation: gql`\n mutation activateUser($userId: String!) {\n activateUser(userId: $userId)\n }\n `,\n variables: { userId: user.id },\n context: gqlContext()\n })\n\n if (!response.errors) {\n this.showToast(i18next.t('text.user activated successfully'))\n\n this.dispatchUserUpdated()\n }\n }\n\n async onInactivate(user) {\n const response = await client.mutate({\n mutation: gql`\n mutation inactivateUser($userId: String!) {\n inactivateUser(userId: $userId)\n }\n `,\n variables: { userId: user.id },\n context: gqlContext()\n })\n\n if (!response.errors) {\n this.showToast(i18next.t('text.user activated successfully'))\n\n this.dispatchUserUpdated()\n }\n }\n\n async onDelete(user) {\n if (user.owner) {\n await OxPrompt.open({\n type: 'warning',\n title: i18next.t('text.cannot_delete'),\n text: i18next.t('text.x_cannot_delete', {\n x: i18next.t('label.domain-owner')\n }),\n confirmButton: { text: i18next.t('button.confirm') }\n })\n\n return\n }\n\n if (\n await OxPrompt.open({\n title: i18next.t('text.are_you_sure'),\n text: i18next.t('text.are_you_sure_to_x_user', {\n x: i18next.t('button.delete')\n }),\n confirmButton: { text: i18next.t('button.delete') },\n cancelButton: { text: i18next.t('button.cancel') }\n })\n ) {\n const response = await client.mutate({\n mutation: gql`\n mutation deleteDomaineUser($email: EmailAddress!) {\n deleteDomainUser(email: $email)\n }\n `,\n variables: { email: user.email },\n context: gqlContext()\n })\n\n if (!response.errors) {\n await OxPrompt.open({\n type: 'success',\n title: i18next.t('text.completed'),\n confirmButton: { text: i18next.t('button.confirm') }\n })\n\n this.dispatchUserUpdated()\n }\n }\n }\n\n async onTransfer(user) {\n openPopup(\n html`\n <ownership-transfer-popup\n .user=${user}\n @ownershipTransferred=\"${this.dispatchOwnershipTransferred.bind(this)}\"\n ></ownership-transfer-popup>\n `,\n {\n size: 'small',\n title: `${i18next.t('title.owner_transfer')}`\n }\n )\n }\n\n async onResetPassword(user) {\n if (\n await OxPrompt.open({\n title: i18next.t('text.are_you_sure'),\n text: i18next.t('text.are_you_sure_to_x', { x: i18next.t('title.reset password') }),\n confirmButton: { text: i18next.t('button.confirm') },\n cancelButton: { text: i18next.t('button.cancel') }\n })\n ) {\n const response = await client.mutate({\n mutation: gql`\n mutation resetPasswordToDefault($userId: String!) {\n resetPasswordToDefault(userId: $userId)\n }\n `,\n variables: { userId: user.id },\n context: gqlContext()\n })\n\n if (!response.errors) {\n await OxPrompt.open({\n type: 'success',\n title: i18next.t('text.completed'),\n text: i18next.t('text.password reset succeed'),\n confirmButton: { text: i18next.t('button.confirm') }\n })\n }\n }\n }\n\n dispatchUserUpdated() {\n this.dispatchEvent(new CustomEvent('userUpdated'))\n }\n\n dispatchOwnershipTransferred() {\n this.dispatchEvent(new CustomEvent('ownershipTransferred'))\n }\n\n showToast(message) {\n document.dispatchEvent(new CustomEvent('notify', { detail: { message, option: { timer: 1000 } } }))\n }\n\n stateChanged(state) {\n this.me = state.auth?.user || {}\n this.isSuperOwner = this.me.super || false\n this.isDomainOwner = this.me.email === this.domainOwner.email || false\n }\n}\n"]}
|
|
@@ -139,7 +139,8 @@ AuthActivate.styles = [
|
|
|
139
139
|
width: 100vw;
|
|
140
140
|
height: 100vh;
|
|
141
141
|
height: 100dvh;
|
|
142
|
-
background-color: var(--
|
|
142
|
+
background-color: var(--md-sys-color-primary);
|
|
143
|
+
color: var(--md-sys-color-on-primary);
|
|
143
144
|
}
|
|
144
145
|
|
|
145
146
|
.wrap {
|
|
@@ -188,10 +189,8 @@ AuthActivate.styles = [
|
|
|
188
189
|
}
|
|
189
190
|
|
|
190
191
|
md-elevated-button {
|
|
191
|
-
--md-
|
|
192
|
-
--md-
|
|
193
|
-
--md-button-horizontal-padding: var(--spacing-medium);
|
|
194
|
-
--md-button-ink-color: var(--md-sys-color-primary);
|
|
192
|
+
--md-elevated-button-horizontal-padding: var(--spacing-medium);
|
|
193
|
+
--md-elevated-button-ink-color: var(--md-sys-color-primary);
|
|
195
194
|
}
|
|
196
195
|
|
|
197
196
|
contact-us {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activate.js","sourceRoot":"","sources":["../../../client/entries/auth/activate.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport '@material/web/button/elevated-button.js'\n\nimport '@operato/i18n/ox-i18n.js'\nimport '@operato/layout/ox-snack-bar.js'\nimport '@operato/lottie-player'\nimport '../../components/contact-us'\n\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\n\nimport { i18next, localize } from '@operato/i18n'\n\n@customElement('auth-activate')\nexport class AuthActivate extends localize(i18next)(LitElement) {\n static styles = [\n css`\n :host {\n display: flex;\n width: 100vw;\n height: 100vh;\n height: 100dvh;\n background-color: var(--auth-background, var(--md-sys-color-primary));\n }\n\n .wrap {\n display: block;\n width: 450px;\n min-width: 350px;\n margin: 0 auto;\n text-align: center;\n }\n\n .auth-brand {\n color: #fff;\n }\n\n .auth-brand img {\n margin: 15% auto 5px auto;\n width: 100px;\n border: 3px solid var(--md-sys-color-on-primary);\n border-radius: 25px;\n box-shadow: var(--box-shadow);\n }\n\n .name {\n display: block;\n font: var(--auth-brand-name);\n text-shadow: var(--auth-brand-name-shadow);\n }\n\n h1 {\n margin: 50px 0 0 0;\n padding: 0;\n font-size: 24px;\n color: var(--auth-title-color, var(--md-sys-color-on-primary));\n }\n\n p {\n margin: 0;\n padding: var(--auth-description-padding);\n font: var(--auth-description-font);\n color: var(--auth-description-color, var(--md-sys-color-on-secondary));\n }\n\n #button-area {\n border-top: 1px dashed #ccc;\n padding-top: 10px;\n }\n\n md-elevated-button {\n --md-theme-primary: var(--md-sys-color-on-primary);\n --md-theme-on-primary: var(--md-sys-color-primary);\n --md-button-horizontal-padding: var(--spacing-medium);\n --md-button-ink-color: var(--md-sys-color-primary);\n }\n\n contact-us {\n display: flex;\n padding: 50px;\n flex-direction: column;\n }\n\n .lottie-container {\n width: 100%;\n height: 300px;\n position: absolute;\n left: 0;\n bottom: 0;\n pointer-events: none;\n }\n\n .lottie-container lottie-player {\n position: absolute;\n bottom: -6%;\n width: 100%;\n height: auto;\n }\n\n @media (max-width: 450px) {\n .wrap {\n width: 85%;\n min-width: 320px;\n padding-bottom: 100px;\n }\n\n .auth-form {\n grid-template-columns: 1fr;\n }\n\n .auth-brand img {\n margin: 12% auto 5px auto;\n width: 75px;\n }\n\n .lottie-container {\n overflow: hidden;\n height: 200px;\n pointer-events: none;\n }\n\n .lottie-container lottie-player {\n width: 1200px;\n left: -30%;\n }\n }\n `\n ]\n\n @property({ type: Object }) data: any\n @property({ type: String }) email?: string | null\n\n @query('#form') form!: HTMLFormElement\n\n private _applicationMeta?: { icon?: string; title?: string; description?: string }\n\n render() {\n var { icon, title, description } = this.applicationMeta\n\n return html`\n <div class=\"wrap\">\n <div class=\"auth-brand\">\n <img src=${icon} />\n <strong class=\"name\">${title}</strong>\n <span class=\"welcome-msg\">${description}</span>\n </div>\n\n <h1><ox-i18n msgid=\"text.your account is not activated\"></ox-i18n></h1>\n\n <!--description message container-->\n <p></p>\n\n <form\n id=\"form\"\n action=\"/auth/resend-verification-email\"\n method=\"POST\"\n @submit=${e => {\n this.requestResend(e)\n }}\n hidden\n >\n <input name=\"email\" type=\"hidden\" .value=${this.email || ''} required />\n <button id=\"submit-button\" type=\"submit\"><ox-i18n msgid=\"label.change password\"></ox-i18n></button>\n </form>\n\n <div id=\"button-area\">\n <md-elevated-button @click=${e => this.requestResend(e)}>\n <md-icon slot=\"icon\">mail_outline</md-icon>\n ${i18next.t('label.send activation email')}\n </md-elevated-button>\n <md-elevated-button\n @click=${e => {\n window.location.replace('/auth/signin')\n }}\n >\n <md-icon slot=\"icon\">home</md-icon>\n ${i18next.t('button.go to home')}\n </md-elevated-button>\n </div>\n <contact-us></contact-us>\n\n <!--lottie animation begin-->\n <div class=\"lottie-container\">\n <lottie-player autoplay loop src=\"../../assets/images/background-animation.json\"></lottie-player>\n </div>\n <!--lottie animation end-->\n </div>\n\n <ox-snack-bar id=\"snackbar\"></ox-snack-bar>\n `\n }\n\n get applicationMeta() {\n if (!this._applicationMeta) {\n var iconLink: HTMLLinkElement | null = document.querySelector('link[rel=\"application-icon\"]')\n var titleMeta: HTMLMetaElement | null = document.querySelector('meta[name=\"application-name\"]')\n var descriptionMeta: HTMLMetaElement | null = document.querySelector('meta[name=\"application-description\"]')\n\n this._applicationMeta = {\n icon: iconLink?.href,\n title: titleMeta ? titleMeta.content : 'Things Factory',\n description: descriptionMeta ? descriptionMeta.content : 'Reimagining Software'\n }\n }\n\n return this._applicationMeta\n }\n\n firstUpdated() {\n var searchParams = new URLSearchParams(window.location.search)\n this.email = searchParams.get('email')\n }\n\n updated(changed) {\n if (changed.has('data')) {\n this.email = this.data?.email\n }\n }\n\n async requestResend(e) {\n var timer\n var formData = new FormData(this.form)\n var button = e.target\n try {\n var controller = new AbortController()\n var signal = controller.signal\n\n button.disabled = true\n timer = setTimeout(() => {\n controller.abort()\n throw new Error('timeout')\n }, 30 * 1000)\n\n var response = await fetch('/auth/resend-verification-email', {\n credentials: 'include',\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(Object.fromEntries(formData.entries())),\n signal\n })\n\n if (response) {\n this.showSnackbar({\n level: response.ok ? 'info' : 'error',\n message: await response.text()\n })\n }\n } catch (e) {\n } finally {\n button.disabled = false\n clearTimeout(timer)\n }\n }\n\n showSnackbar({ level, message, timer = 3000 }: { level: 'info' | 'error'; message: string; timer?: number }) {\n const snackbar = this.renderRoot.querySelector('#snackbar') as HTMLElement & {\n level: 'info' | 'error'\n message: string\n active: boolean\n }\n\n snackbar.level = level\n snackbar.message = message\n snackbar.active = true\n\n if (timer > -1)\n setTimeout(() => {\n snackbar.active = false\n }, timer)\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"activate.js","sourceRoot":"","sources":["../../../client/entries/auth/activate.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport '@material/web/button/elevated-button.js'\n\nimport '@operato/i18n/ox-i18n.js'\nimport '@operato/layout/ox-snack-bar.js'\nimport '@operato/lottie-player'\nimport '../../components/contact-us'\n\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\n\nimport { i18next, localize } from '@operato/i18n'\n\n@customElement('auth-activate')\nexport class AuthActivate extends localize(i18next)(LitElement) {\n static styles = [\n css`\n :host {\n display: flex;\n width: 100vw;\n height: 100vh;\n height: 100dvh;\n background-color: var(--md-sys-color-primary);\n color: var(--md-sys-color-on-primary);\n }\n\n .wrap {\n display: block;\n width: 450px;\n min-width: 350px;\n margin: 0 auto;\n text-align: center;\n }\n\n .auth-brand {\n color: #fff;\n }\n\n .auth-brand img {\n margin: 15% auto 5px auto;\n width: 100px;\n border: 3px solid var(--md-sys-color-on-primary);\n border-radius: 25px;\n box-shadow: var(--box-shadow);\n }\n\n .name {\n display: block;\n font: var(--auth-brand-name);\n text-shadow: var(--auth-brand-name-shadow);\n }\n\n h1 {\n margin: 50px 0 0 0;\n padding: 0;\n font-size: 24px;\n color: var(--auth-title-color, var(--md-sys-color-on-primary));\n }\n\n p {\n margin: 0;\n padding: var(--auth-description-padding);\n font: var(--auth-description-font);\n color: var(--auth-description-color, var(--md-sys-color-on-secondary));\n }\n\n #button-area {\n border-top: 1px dashed #ccc;\n padding-top: 10px;\n }\n\n md-elevated-button {\n --md-elevated-button-horizontal-padding: var(--spacing-medium);\n --md-elevated-button-ink-color: var(--md-sys-color-primary);\n }\n\n contact-us {\n display: flex;\n padding: 50px;\n flex-direction: column;\n }\n\n .lottie-container {\n width: 100%;\n height: 300px;\n position: absolute;\n left: 0;\n bottom: 0;\n pointer-events: none;\n }\n\n .lottie-container lottie-player {\n position: absolute;\n bottom: -6%;\n width: 100%;\n height: auto;\n }\n\n @media (max-width: 450px) {\n .wrap {\n width: 85%;\n min-width: 320px;\n padding-bottom: 100px;\n }\n\n .auth-form {\n grid-template-columns: 1fr;\n }\n\n .auth-brand img {\n margin: 12% auto 5px auto;\n width: 75px;\n }\n\n .lottie-container {\n overflow: hidden;\n height: 200px;\n pointer-events: none;\n }\n\n .lottie-container lottie-player {\n width: 1200px;\n left: -30%;\n }\n }\n `\n ]\n\n @property({ type: Object }) data: any\n @property({ type: String }) email?: string | null\n\n @query('#form') form!: HTMLFormElement\n\n private _applicationMeta?: { icon?: string; title?: string; description?: string }\n\n render() {\n var { icon, title, description } = this.applicationMeta\n\n return html`\n <div class=\"wrap\">\n <div class=\"auth-brand\">\n <img src=${icon} />\n <strong class=\"name\">${title}</strong>\n <span class=\"welcome-msg\">${description}</span>\n </div>\n\n <h1><ox-i18n msgid=\"text.your account is not activated\"></ox-i18n></h1>\n\n <!--description message container-->\n <p></p>\n\n <form\n id=\"form\"\n action=\"/auth/resend-verification-email\"\n method=\"POST\"\n @submit=${e => {\n this.requestResend(e)\n }}\n hidden\n >\n <input name=\"email\" type=\"hidden\" .value=${this.email || ''} required />\n <button id=\"submit-button\" type=\"submit\"><ox-i18n msgid=\"label.change password\"></ox-i18n></button>\n </form>\n\n <div id=\"button-area\">\n <md-elevated-button @click=${e => this.requestResend(e)}>\n <md-icon slot=\"icon\">mail_outline</md-icon>\n ${i18next.t('label.send activation email')}\n </md-elevated-button>\n <md-elevated-button\n @click=${e => {\n window.location.replace('/auth/signin')\n }}\n >\n <md-icon slot=\"icon\">home</md-icon>\n ${i18next.t('button.go to home')}\n </md-elevated-button>\n </div>\n <contact-us></contact-us>\n\n <!--lottie animation begin-->\n <div class=\"lottie-container\">\n <lottie-player autoplay loop src=\"../../assets/images/background-animation.json\"></lottie-player>\n </div>\n <!--lottie animation end-->\n </div>\n\n <ox-snack-bar id=\"snackbar\"></ox-snack-bar>\n `\n }\n\n get applicationMeta() {\n if (!this._applicationMeta) {\n var iconLink: HTMLLinkElement | null = document.querySelector('link[rel=\"application-icon\"]')\n var titleMeta: HTMLMetaElement | null = document.querySelector('meta[name=\"application-name\"]')\n var descriptionMeta: HTMLMetaElement | null = document.querySelector('meta[name=\"application-description\"]')\n\n this._applicationMeta = {\n icon: iconLink?.href,\n title: titleMeta ? titleMeta.content : 'Things Factory',\n description: descriptionMeta ? descriptionMeta.content : 'Reimagining Software'\n }\n }\n\n return this._applicationMeta\n }\n\n firstUpdated() {\n var searchParams = new URLSearchParams(window.location.search)\n this.email = searchParams.get('email')\n }\n\n updated(changed) {\n if (changed.has('data')) {\n this.email = this.data?.email\n }\n }\n\n async requestResend(e) {\n var timer\n var formData = new FormData(this.form)\n var button = e.target\n try {\n var controller = new AbortController()\n var signal = controller.signal\n\n button.disabled = true\n timer = setTimeout(() => {\n controller.abort()\n throw new Error('timeout')\n }, 30 * 1000)\n\n var response = await fetch('/auth/resend-verification-email', {\n credentials: 'include',\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(Object.fromEntries(formData.entries())),\n signal\n })\n\n if (response) {\n this.showSnackbar({\n level: response.ok ? 'info' : 'error',\n message: await response.text()\n })\n }\n } catch (e) {\n } finally {\n button.disabled = false\n clearTimeout(timer)\n }\n }\n\n showSnackbar({ level, message, timer = 3000 }: { level: 'info' | 'error'; message: string; timer?: number }) {\n const snackbar = this.renderRoot.querySelector('#snackbar') as HTMLElement & {\n level: 'info' | 'error'\n message: string\n active: boolean\n }\n\n snackbar.level = level\n snackbar.message = message\n snackbar.active = true\n\n if (timer > -1)\n setTimeout(() => {\n snackbar.active = false\n }, timer)\n }\n}\n"]}
|
|
@@ -100,12 +100,14 @@ AuthCheckIn.styles = [
|
|
|
100
100
|
display: flex;
|
|
101
101
|
flex-direction: column;
|
|
102
102
|
margin: auto;
|
|
103
|
-
background-color: var(--
|
|
103
|
+
background-color: var(--md-sys-color-primary);
|
|
104
|
+
color: var(--md-sys-color-on-primary);
|
|
104
105
|
height: 100vh;
|
|
105
106
|
height: 100dvh;
|
|
106
107
|
}
|
|
107
108
|
.header {
|
|
108
109
|
background-color: var(--md-sys-color-primary);
|
|
110
|
+
color: var(--md-sys-color-on-primary);
|
|
109
111
|
height: var(--checkin-header-height);
|
|
110
112
|
}
|
|
111
113
|
.content {
|
|
@@ -117,6 +119,7 @@ AuthCheckIn.styles = [
|
|
|
117
119
|
margin: var(--margin-wide) 0;
|
|
118
120
|
padding: 0;
|
|
119
121
|
background-color: var(--md-sys-color-surface);
|
|
122
|
+
color: var(--md-sys-color-on-surface);
|
|
120
123
|
border-radius: var(--border-radius);
|
|
121
124
|
border: var(--border-dim-color);
|
|
122
125
|
list-style: none;
|
|
@@ -126,13 +129,13 @@ AuthCheckIn.styles = [
|
|
|
126
129
|
margin-bottom: -1px;
|
|
127
130
|
padding: var(--padding-default) var(--padding-wide);
|
|
128
131
|
font-size: 18px;
|
|
129
|
-
color: var(--md-sys-color-secondary);
|
|
130
132
|
text-align: left;
|
|
131
133
|
|
|
132
134
|
cursor: pointer;
|
|
133
135
|
}
|
|
134
136
|
li:hover {
|
|
135
137
|
background-color: var(--md-sys-color-primary-container);
|
|
138
|
+
color: var(--md-sys-color-on-primary-container);
|
|
136
139
|
}
|
|
137
140
|
li span {
|
|
138
141
|
display: block;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkin.js","sourceRoot":"","sources":["../../../client/entries/auth/checkin.ts"],"names":[],"mappings":";AAAA,OAAO,4BAA4B,CAAA;AACnC,OAAO,yCAAyC,CAAA;AAEhD,OAAO,wBAAwB,CAAA;AAE/B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE3D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAGhD,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC;IAAvD;;
|
|
1
|
+
{"version":3,"file":"checkin.js","sourceRoot":"","sources":["../../../client/entries/auth/checkin.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport '@material/web/button/elevated-button.js'\n\nimport '@operato/lottie-player'\n\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\nimport { i18next, localize } from '@operato/i18n'\nimport { ScrollbarStyles } from '@operato/styles'\nimport { isSafari } from '@operato/utils'\n\nimport { AUTH_STYLE_SIGN } from '../../auth-style-sign'\n\n@customElement('auth-checkin')\nexport class AuthCheckIn extends localize(i18next)(LitElement) {\n static styles = [\n ScrollbarStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n margin: auto;\n background-color: var(--md-sys-color-primary);\n color: var(--md-sys-color-on-primary);\n height: 100vh;\n height: 100dvh;\n }\n .header {\n background-color: var(--md-sys-color-primary);\n color: var(--md-sys-color-on-primary);\n height: var(--checkin-header-height);\n }\n .content {\n flex: 1;\n overflow: auto;\n }\n\n .domains {\n margin: var(--margin-wide) 0;\n padding: 0;\n background-color: var(--md-sys-color-surface);\n color: var(--md-sys-color-on-surface);\n border-radius: var(--border-radius);\n border: var(--border-dim-color);\n list-style: none;\n }\n li {\n border-bottom: var(--border-dim-color);\n margin-bottom: -1px;\n padding: var(--padding-default) var(--padding-wide);\n font-size: 18px;\n text-align: left;\n\n cursor: pointer;\n }\n li:hover {\n background-color: var(--md-sys-color-primary-container);\n color: var(--md-sys-color-on-primary-container);\n }\n li span {\n display: block;\n font: normal var(--fontsize-default) var(--theme-font);\n }\n li md-icon {\n float: right;\n margin: 2px 0 0 0;\n opacity: 0.5;\n }\n .button-container {\n text-align: center;\n }\n .button-container md-elevated-button {\n margin-left: var(--margin-narrow);\n }\n\n @media (max-width: 450px) {\n .button-container md-elevated-button {\n width: 100%;\n margin: var(--margin-default) 0 0 0;\n }\n }\n `,\n AUTH_STYLE_SIGN\n ]\n\n @property({ type: Object }) data: any\n @property({ type: Array }) domains: any[] = []\n @property({ type: String }) domainType?: string\n @property({ type: Object }) user: any\n\n private _applicationMeta?: { icon?: string; title?: string; description?: string }\n private redirectTo?: string\n\n render() {\n var { icon, title, description } = this.applicationMeta\n\n return html`\n <div class=\"content md-typescale-display-medium\">\n <div class=\"wrap\">\n <div class=\"auth-brand\">\n <img src=${icon || ''} />\n <strong class=\"name\">${title}</strong>\n <span class=\"welcome-msg\">${description}</span>\n </div>\n\n <h3>${i18next.t('label.select_domain')}</h3>\n\n ${this.domains?.length\n ? html`\n <ul class=\"domains\">\n ${this.domains.map(\n domain => html`\n <li\n @click=${() =>\n (location.href = `/auth/checkin/${domain.subdomain}?redirect_to=${encodeURIComponent(this.redirectTo || '/')}`)}\n >\n <md-icon>keyboard_arrow_right</md-icon>\n <strong>${domain.name}</strong>\n <span>${domain.description}</span>\n </li>\n `\n )}\n </ul>\n `\n : html` <h3>${i18next.t('text.no domain available')}</h3> `}\n\n <div class=\"button-container\">\n <md-elevated-button @click=${() => (location.pathname = '/auth/signout')}\n >${String(i18next.t('button.logout'))}</md-elevated-button\n >\n\n ${this.domainType?.toLowerCase() === 'company'\n ? html`<md-elevated-button\n @click=${e => (location.href = `/public/business-register?email=${this.user?.email}`)}\n >${String(i18next.t('button.register business domain'))}</md-elevated-button\n > `\n : ''}\n </div>\n\n ${isSafari()\n ? html``\n : html`\n <div class=\"lottie-container\">\n <lottie-player autoplay loop src=\"../../assets/images/background-animation.json\"></lottie-player>\n </div>\n `}\n </div>\n </div>\n `\n }\n\n updated(changed) {\n if (changed.has('data')) {\n this.domains = this.data.domains\n this.user = this.data.user\n this.domainType = this.data.domainType\n this.redirectTo = this.data.redirectTo\n\n this.requestUpdate()\n }\n }\n\n navigateToUrl(url) {\n location.pathname = url\n }\n\n get applicationMeta() {\n if (!this._applicationMeta) {\n var iconLink: HTMLLinkElement | null = document.querySelector('link[rel=\"application-icon\"]')\n var titleMeta: HTMLMetaElement | null = document.querySelector('meta[name=\"application-name\"]')\n var descriptionMeta: HTMLMetaElement | null = document.querySelector('meta[name=\"application-description\"]')\n\n this._applicationMeta = {\n icon: iconLink?.href,\n title: titleMeta ? titleMeta.content : 'Things Factory',\n description: descriptionMeta ? descriptionMeta.content : 'Reimagining Software'\n }\n }\n\n return this._applicationMeta\n }\n}\n"]}
|
|
@@ -71,7 +71,8 @@ AuthResult.styles = [
|
|
|
71
71
|
width: 100vw;
|
|
72
72
|
height: 100vh;
|
|
73
73
|
height: 100dvh;
|
|
74
|
-
background-color: var(--
|
|
74
|
+
background-color: var(--md-sys-color-primary);
|
|
75
|
+
color: var(--md-sys-color-on-primary);
|
|
75
76
|
}
|
|
76
77
|
.wrap {
|
|
77
78
|
display: block;
|
|
@@ -123,16 +124,17 @@ AuthResult.styles = [
|
|
|
123
124
|
font: bold 14px var(--theme-font);
|
|
124
125
|
color: var(--md-sys-color-primary);
|
|
125
126
|
}
|
|
127
|
+
|
|
126
128
|
#button-area {
|
|
127
129
|
border-top: 1px dashed rgba(0, 0, 0, 0.1);
|
|
128
130
|
padding-top: 10px;
|
|
129
131
|
}
|
|
132
|
+
|
|
130
133
|
md-elevated-button {
|
|
131
|
-
--md-theme-primary: var(--auth-button-background-color);
|
|
132
|
-
--md-theme-on-primary: var(--md-sys-color-primary);
|
|
133
134
|
--md-button-horizontal-padding: var(--padding-default);
|
|
134
135
|
--md-button-ink-color: var(--md-sys-color-primary);
|
|
135
136
|
}
|
|
137
|
+
|
|
136
138
|
.lottie-container {
|
|
137
139
|
width: 100%;
|
|
138
140
|
height: 300px;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../../client/entries/auth/result.ts"],"names":[],"mappings":";AAAA,OAAO,yCAAyC,CAAA;AAEhD,OAAO,wBAAwB,CAAA;AAC/B,OAAO,oCAAoC,CAAA;AAE3C,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE3D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAGlC,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../../client/entries/auth/result.ts"],"names":[],"mappings":";AAAA,OAAO,yCAAyC,CAAA;AAEhD,OAAO,wBAAwB,CAAA;AAC/B,OAAO,oCAAoC,CAAA;AAE3C,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE3D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAGlC,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC;IAuH3D,OAAO,CAAC,OAAO;QACb,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAA;YAChC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,iBAAiB,CAAA;QAC7D,CAAC;IACH,CAAC;IAED,MAAM;QACJ,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,eAAe,CAAA;QAEvD,OAAO,IAAI,CAAA;yBACU,IAAI,CAAC,UAAU;;qBAEnB,IAAI;iCACQ,KAAK;sCACA,WAAW;;;;gBAIjC,IAAI,CAAC,OAAO,IAAI,EAAE;;;;;;;qBAOb,CAAC,CAAC,EAAE;YACX,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;QACzC,CAAC;;;cAGC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC;;;;UAIlC,QAAQ,EAAE;YACV,CAAC,CAAC,IAAI,CAAA,EAAE;YACR,CAAC,CAAC,IAAI,CAAA;;;;aAIH;;KAER,CAAA;IACH,CAAC;IAED,IAAI,eAAe;QACjB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,IAAI,QAAQ,GAA2B,QAAQ,CAAC,aAAa,CAAC,8BAA8B,CAAC,CAAA;YAC7F,IAAI,SAAS,GAA2B,QAAQ,CAAC,aAAa,CAAC,+BAA+B,CAAC,CAAA;YAC/F,IAAI,eAAe,GAA2B,QAAQ,CAAC,aAAa,CAAC,sCAAsC,CAAC,CAAA;YAE5G,IAAI,CAAC,gBAAgB,GAAG;gBACtB,IAAI,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI;gBACpB,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB;gBACvD,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB;aAChF,CAAA;QACH,CAAC;QAED,OAAO,IAAI,CAAC,gBAAgB,CAAA;IAC9B,CAAC;;AAlLM,iBAAM,GAAG;IACd,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA4GF;CACF,AA9GY,CA8GZ;AAE2B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;wCAAU;AACT;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;2CAAiB;AAChB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;8CAAoB;AAnHpC,UAAU;IADtB,aAAa,CAAC,aAAa,CAAC;GAChB,UAAU,CAoLtB","sourcesContent":["import '@material/web/button/elevated-button.js'\n\nimport '@operato/lottie-player'\nimport '../../components/profile-component'\n\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\nimport { i18next, localize } from '@operato/i18n'\nimport { isSafari } from '@operato/utils'\n\n@customElement('auth-result')\nexport class AuthResult extends localize(i18next)(LitElement) {\n static styles = [\n css`\n :host {\n display: flex;\n width: 100vw;\n height: 100vh;\n height: 100dvh;\n background-color: var(--md-sys-color-primary);\n color: var(--md-sys-color-on-primary);\n }\n .wrap {\n display: block;\n width: 450px;\n min-width: 350px;\n margin: 0 auto;\n text-align: center;\n }\n .auth-brand {\n color: #fff;\n }\n .auth-brand img {\n margin: 15% auto 5px auto;\n width: 100px;\n border: 3px solid var(--md-sys-color-on-primary);\n border-radius: 25px;\n box-shadow: var(--box-shadow);\n }\n .name {\n display: block;\n font: var(--auth-brand-name);\n text-shadow: var(--auth-brand-name-shadow);\n }\n h1 {\n margin: 50px 0 0 0;\n padding: 0;\n font-size: 24px;\n color: var(--auth-title-color, var(--md-sys-color-on-primary));\n }\n p {\n margin: 0;\n padding: var(--auth-description-padding);\n font: var(--auth-description-font);\n color: var(--auth-description-color, var(--md-sys-color-on-secondary));\n }\n :host *:focus {\n outline: none;\n }\n .user {\n background: url(/assets/images/icon-profile.png) center top no-repeat;\n margin: var(--profile-icon-margin);\n padding: 180px 20px 20px 20px;\n color: var(--md-sys-color-secondary);\n font: var(--header-bar-title);\n text-align: center;\n }\n\n label {\n font: bold 14px var(--theme-font);\n color: var(--md-sys-color-primary);\n }\n\n #button-area {\n border-top: 1px dashed rgba(0, 0, 0, 0.1);\n padding-top: 10px;\n }\n\n md-elevated-button {\n --md-button-horizontal-padding: var(--padding-default);\n --md-button-ink-color: var(--md-sys-color-primary);\n }\n\n .lottie-container {\n width: 100%;\n height: 300px;\n position: absolute;\n left: 0;\n bottom: 0;\n pointer-events: none;\n }\n .lottie-container lottie-player {\n position: absolute;\n bottom: -6%;\n width: 100%;\n height: auto;\n }\n\n @media (max-width: 450px) {\n .wrap {\n width: 85%;\n min-width: 320px;\n padding-bottom: 100px;\n }\n .auth-form {\n grid-template-columns: 1fr;\n }\n .auth-brand img {\n margin: 12% auto 5px auto;\n width: 75px;\n }\n .lottie-container {\n overflow: hidden;\n height: 200px;\n pointer-events: none;\n }\n .lottie-container lottie-player {\n width: 1200px;\n left: -30%;\n }\n }\n `\n ]\n\n @property({ type: Object }) data: any\n @property({ type: String }) message?: string\n @property({ type: String }) resultType?: string\n\n private _applicationMeta?: { icon?: string; title?: string; description?: string }\n\n updated(changed) {\n if (changed.has('data')) {\n this.message = this.data.message\n this.resultType = this.data.resultType || 'congratulations'\n }\n }\n\n render() {\n var { icon, title, description } = this.applicationMeta\n\n return html`\n <div class=\"wrap ${this.resultType}\">\n <div class=\"auth-brand\">\n <img src=${icon} />\n <strong class=\"name\">${title}</strong>\n <span class=\"welcome-msg\">${description}</span>\n </div>\n\n <div id=\"message-area\">\n <h1>${this.message || ''}</h1>\n\n <!--description message container-->\n <p></p>\n </div>\n <div id=\"button-area\">\n <md-elevated-button\n @click=${e => {\n window.location.replace('/auth/signin')\n }}\n >\n <md-icon slot=\"icon\">home</md-icon>\n ${i18next.t('button.go to home')}\n </md-elevated-button>\n </div>\n\n ${isSafari()\n ? html``\n : html`\n <div class=\"lottie-container\">\n <lottie-player autoplay loop src=\"../../assets/images/background-animation.json\"></lottie-player>\n </div>\n `}\n </div>\n `\n }\n\n get applicationMeta() {\n if (!this._applicationMeta) {\n var iconLink: HTMLLinkElement | null = document.querySelector('link[rel=\"application-icon\"]')\n var titleMeta: HTMLMetaElement | null = document.querySelector('meta[name=\"application-name\"]')\n var descriptionMeta: HTMLMetaElement | null = document.querySelector('meta[name=\"application-description\"]')\n\n this._applicationMeta = {\n icon: iconLink?.href,\n title: titleMeta ? titleMeta.content : 'Things Factory',\n description: descriptionMeta ? descriptionMeta.content : 'Reimagining Software'\n }\n }\n\n return this._applicationMeta\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth2-decision-page.js","sourceRoot":"","sources":["../../../client/entries/oauth2/oauth2-decision-page.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/button/elevated-button.js'\nimport '../../components/role-selector'\n\nimport gql from 'graphql-tag'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\n\nimport { client } from '@operato/graphql'\nimport { i18next } from '@operato/i18n'\nimport { OxPrompt } from '@operato/popup/ox-prompt.js'\nimport { ButtonContainerStyles } from '@operato/styles'\n\n@customElement('oauth2-decision')\nclass OAuth2DecisionPage extends LitElement {\n static styles = [\n ButtonContainerStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n\n border: 1px solid var(--md-sys-color-primary);\n margin: var(--margin-default);\n padding: var(--padding-default);\n font: normal 15px var(--theme-font);\n color: var(--md-sys-color-secondary);\n }\n\n [field-2column] {\n border-radius: var(--border-radius);\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 5px 15px;\n clear: both;\n max-width: var(--input-container-max-width);\n }\n\n [field] {\n display: flex;\n flex-direction: column;\n padding-bottom: var(--padding-default);\n }\n\n input {\n border: var(--border-dim-color);\n border-radius: var(--border-radius);\n margin: var(--input-margin);\n padding: var(--input-padding);\n min-width: 250px;\n font: var(--input-font);\n }\n\n label {\n display: flex;\n flex-direction: column;\n font: var(--label-font);\n color: var(--label-color, var(--md-sys-color-on-surface));\n text-transform: var(--label-text-transform);\n }\n\n md-elevated-button {\n margin-right: var(--padding-narrow);\n }\n\n [danger] {\n --md-theme-primary: var(--md-danger-button-primary-color);\n }\n `\n ]\n\n @property({ type: Object }) data: any = {}\n @property({ type: Object }) user: any = {}\n @property({ type: Object }) client: any = {}\n @property({ type: Object }) domain: any = {}\n @property({ type: Object }) req: any = {}\n @property({ type: String }) redirectURI: string = ''\n @property({ type: String }) transactionID: string = ''\n @property({ type: Array }) roles: any[] = []\n\n @query('role-selector') roleSelector!: HTMLElement & { selectedRoles: () => any[] }\n\n render() {\n return html`\n <h2>Application Binding</h2>\n <p>Hi ${this.user.name}!</p>\n <p><b> ${this.client.name} </b> is requesting access to your account.</p>\n <p>Do you approve?</p>\n\n <form field-2column>\n <div field>\n <label\n >${i18next.t('label.company')}\n <input readonly value=\"${this.domain.subdomain}\" />\n </label>\n\n <label\n >${i18next.t('label.client-id')}\n <input readonly value=\"${this.req.clientID}\" />\n </label>\n </div>\n\n <div field>\n <label\n >${i18next.t('label.redirect_uri')}\n <input readonly value=\"${this.redirectURI}\" />\n </label>\n\n <label\n >${i18next.t('label.state')}\n <input readonly value=\"${this.req.state}\" />\n </label>\n </div>\n </form>\n\n <role-selector .roleCategory=\"${this.domain.name}\" .roles=\"${this.roles}\"></role-selector>\n\n <div class=\"button-container\">\n <md-elevated-button @click=\"${() => this.decision(true)}\" raised label=\"Allow\"></md-elevated-button>\n <md-elevated-button @click=\"${() => this.decision(false)}\" raised danger label=\"Deny\"></md-elevated-button>\n </div>\n `\n }\n\n async firstUpdated() {\n this.fetchMyRoles()\n }\n\n updated(changedProps) {\n if (changedProps.has('data')) {\n this.user = this.data?.oauth2?.user || this.user\n this.client = this.data?.oauth2?.client || this.client\n this.domain = this.data?.domain || this.domain\n this.req = this.data?.oauth2?.req || this.req\n this.redirectURI = this.data?.oauth2?.redirectURI || this.redirectURI\n this.transactionID = this.data?.oauth2?.transactionID || this.transactionID\n }\n }\n\n async fetchMyRoles() {\n const response = await client.query({\n query: gql`\n query myRoles {\n myRoles {\n id\n name\n description\n }\n }\n `\n })\n\n if (!response.errors?.length) {\n this.roles = response.data.myRoles\n }\n }\n\n async decision(allowOrCancel) {\n const selectedRoles = this.selectedRoles()\n if (allowOrCancel && !selectedRoles?.length) {\n await OxPrompt.open({\n title: i18next.t('title.nothing selected'),\n text: i18next.t('text.should select at least one of x', { x: i18next.t('label.role') }),\n confirmButton: { text: i18next.t('button.confirm') }\n })\n\n return\n }\n\n let data: any = {\n transaction_id: this.transactionID,\n subdomain: this.domain.subdomain,\n appKey: this.req.clientID,\n state: this.req.state,\n email: this.user.email,\n scopes: selectedRoles\n }\n if (!allowOrCancel) {\n data.cancel = 'Deny'\n }\n\n const response = await fetch('/oauth/decision', {\n method: 'POST',\n mode: 'cors',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json'\n },\n redirect: 'follow',\n body: JSON.stringify(data)\n })\n\n if (response.redirected) {\n location.href = response.url\n }\n }\n\n selectedRoles() {\n return this.roleSelector.selectedRoles()\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"oauth2-decision-page.js","sourceRoot":"","sources":["../../../client/entries/oauth2/oauth2-decision-page.ts"],"names":[],"mappings":";AAAA,OAAO,yCAAyC,CAAA;AAChD,OAAO,gCAAgC,CAAA;AAEvC,OAAO,GAAG,MAAM,aAAa,CAAA;AAC7B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAElE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAGvD,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,UAAU;IAA3C;;QAqD8B,SAAI,GAAQ,EAAE,CAAA;QACd,SAAI,GAAQ,EAAE,CAAA;QACd,WAAM,GAAQ,EAAE,CAAA;QAChB,WAAM,GAAQ,EAAE,CAAA;QAChB,QAAG,GAAQ,EAAE,CAAA;QACb,gBAAW,GAAW,EAAE,CAAA;QACxB,kBAAa,GAAW,EAAE,CAAA;QAC3B,UAAK,GAAU,EAAE,CAAA;IA0H9C,CAAC;IAtHC,MAAM;QACJ,OAAO,IAAI,CAAA;;cAED,IAAI,CAAC,IAAI,CAAC,IAAI;eACb,IAAI,CAAC,MAAM,CAAC,IAAI;;;;;;eAMhB,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;qCACJ,IAAI,CAAC,MAAM,CAAC,SAAS;;;;eAI3C,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC;qCACN,IAAI,CAAC,GAAG,CAAC,QAAQ;;;;;;eAMvC,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC;qCACT,IAAI,CAAC,WAAW;;;;eAItC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC;qCACF,IAAI,CAAC,GAAG,CAAC,KAAK;;;;;sCAKb,IAAI,CAAC,MAAM,CAAC,IAAI,aAAa,IAAI,CAAC,KAAK;;;sCAGvC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;sCACzB,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;;KAE3D,CAAA;IACH,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC,YAAY,EAAE,CAAA;IACrB,CAAC;IAED,OAAO,CAAC,YAAY;;QAClB,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI,GAAG,CAAA,MAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,MAAM,0CAAE,IAAI,KAAI,IAAI,CAAC,IAAI,CAAA;YAChD,IAAI,CAAC,MAAM,GAAG,CAAA,MAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,MAAM,0CAAE,MAAM,KAAI,IAAI,CAAC,MAAM,CAAA;YACtD,IAAI,CAAC,MAAM,GAAG,CAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,MAAM,KAAI,IAAI,CAAC,MAAM,CAAA;YAC9C,IAAI,CAAC,GAAG,GAAG,CAAA,MAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,MAAM,0CAAE,GAAG,KAAI,IAAI,CAAC,GAAG,CAAA;YAC7C,IAAI,CAAC,WAAW,GAAG,CAAA,MAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,MAAM,0CAAE,WAAW,KAAI,IAAI,CAAC,WAAW,CAAA;YACrE,IAAI,CAAC,aAAa,GAAG,CAAA,MAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,MAAM,0CAAE,aAAa,KAAI,IAAI,CAAC,aAAa,CAAA;QAC7E,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY;;QAChB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;YAClC,KAAK,EAAE,GAAG,CAAA;;;;;;;;OAQT;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,CAAA,MAAA,QAAQ,CAAC,MAAM,0CAAE,MAAM,CAAA,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAA;QACpC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,aAAa;QAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA;QAC1C,IAAI,aAAa,IAAI,CAAC,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,MAAM,CAAA,EAAE,CAAC;YAC5C,MAAM,QAAQ,CAAC,IAAI,CAAC;gBAClB,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC;gBAC1C,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,sCAAsC,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC;gBACvF,aAAa,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE;aACrD,CAAC,CAAA;YAEF,OAAM;QACR,CAAC;QAED,IAAI,IAAI,GAAQ;YACd,cAAc,EAAE,IAAI,CAAC,aAAa;YAClC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;YAChC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ;YACzB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK;YACrB,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;YACtB,MAAM,EAAE,aAAa;SACtB,CAAA;QACD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACtB,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,iBAAiB,EAAE;YAC9C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,SAAS;YACtB,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;YACD,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAA;QAEF,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YACxB,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAA;QAC9B,CAAC;IACH,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAA;IAC1C,CAAC;;AApLM,yBAAM,GAAG;IACd,qBAAqB;IACrB,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA+CF;CACF,AAlDY,CAkDZ;AAE2B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;gDAAe;AACd;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;gDAAe;AACd;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;kDAAiB;AAChB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;kDAAiB;AAChB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;+CAAc;AACb;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;uDAAyB;AACxB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;yDAA2B;AAC3B;IAA1B,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;;iDAAkB;AAEpB;IAAvB,KAAK,CAAC,eAAe,CAAC;;wDAA4D;AA9D/E,kBAAkB;IADvB,aAAa,CAAC,iBAAiB,CAAC;GAC3B,kBAAkB,CAsLvB","sourcesContent":["import '@material/web/button/elevated-button.js'\nimport '../../components/role-selector'\n\nimport gql from 'graphql-tag'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\n\nimport { client } from '@operato/graphql'\nimport { i18next } from '@operato/i18n'\nimport { OxPrompt } from '@operato/popup/ox-prompt.js'\nimport { ButtonContainerStyles } from '@operato/styles'\n\n@customElement('oauth2-decision')\nclass OAuth2DecisionPage extends LitElement {\n static styles = [\n ButtonContainerStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n\n border: 1px solid var(--md-sys-color-primary);\n margin: var(--margin-default);\n padding: var(--padding-default);\n font: normal 15px var(--theme-font);\n color: var(--md-sys-color-secondary);\n }\n\n [field-2column] {\n border-radius: var(--border-radius);\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 5px 15px;\n clear: both;\n max-width: var(--input-container-max-width);\n }\n\n [field] {\n display: flex;\n flex-direction: column;\n padding-bottom: var(--padding-default);\n }\n\n input {\n border: var(--border-dim-color);\n border-radius: var(--border-radius);\n margin: var(--input-margin);\n padding: var(--input-padding);\n min-width: 250px;\n font: var(--input-font);\n }\n\n label {\n display: flex;\n flex-direction: column;\n font: var(--label-font);\n color: var(--label-color, var(--md-sys-color-on-surface));\n text-transform: var(--label-text-transform);\n }\n\n md-elevated-button {\n margin-right: var(--padding-narrow);\n }\n `\n ]\n\n @property({ type: Object }) data: any = {}\n @property({ type: Object }) user: any = {}\n @property({ type: Object }) client: any = {}\n @property({ type: Object }) domain: any = {}\n @property({ type: Object }) req: any = {}\n @property({ type: String }) redirectURI: string = ''\n @property({ type: String }) transactionID: string = ''\n @property({ type: Array }) roles: any[] = []\n\n @query('role-selector') roleSelector!: HTMLElement & { selectedRoles: () => any[] }\n\n render() {\n return html`\n <h2>Application Binding</h2>\n <p>Hi ${this.user.name}!</p>\n <p><b> ${this.client.name} </b> is requesting access to your account.</p>\n <p>Do you approve?</p>\n\n <form field-2column>\n <div field>\n <label\n >${i18next.t('label.company')}\n <input readonly value=\"${this.domain.subdomain}\" />\n </label>\n\n <label\n >${i18next.t('label.client-id')}\n <input readonly value=\"${this.req.clientID}\" />\n </label>\n </div>\n\n <div field>\n <label\n >${i18next.t('label.redirect_uri')}\n <input readonly value=\"${this.redirectURI}\" />\n </label>\n\n <label\n >${i18next.t('label.state')}\n <input readonly value=\"${this.req.state}\" />\n </label>\n </div>\n </form>\n\n <role-selector .roleCategory=\"${this.domain.name}\" .roles=\"${this.roles}\"></role-selector>\n\n <div class=\"button-container\">\n <md-elevated-button @click=\"${() => this.decision(true)}\" raised label=\"Allow\"></md-elevated-button>\n <md-elevated-button @click=\"${() => this.decision(false)}\" raised danger label=\"Deny\"></md-elevated-button>\n </div>\n `\n }\n\n async firstUpdated() {\n this.fetchMyRoles()\n }\n\n updated(changedProps) {\n if (changedProps.has('data')) {\n this.user = this.data?.oauth2?.user || this.user\n this.client = this.data?.oauth2?.client || this.client\n this.domain = this.data?.domain || this.domain\n this.req = this.data?.oauth2?.req || this.req\n this.redirectURI = this.data?.oauth2?.redirectURI || this.redirectURI\n this.transactionID = this.data?.oauth2?.transactionID || this.transactionID\n }\n }\n\n async fetchMyRoles() {\n const response = await client.query({\n query: gql`\n query myRoles {\n myRoles {\n id\n name\n description\n }\n }\n `\n })\n\n if (!response.errors?.length) {\n this.roles = response.data.myRoles\n }\n }\n\n async decision(allowOrCancel) {\n const selectedRoles = this.selectedRoles()\n if (allowOrCancel && !selectedRoles?.length) {\n await OxPrompt.open({\n title: i18next.t('title.nothing selected'),\n text: i18next.t('text.should select at least one of x', { x: i18next.t('label.role') }),\n confirmButton: { text: i18next.t('button.confirm') }\n })\n\n return\n }\n\n let data: any = {\n transaction_id: this.transactionID,\n subdomain: this.domain.subdomain,\n appKey: this.req.clientID,\n state: this.req.state,\n email: this.user.email,\n scopes: selectedRoles\n }\n if (!allowOrCancel) {\n data.cancel = 'Deny'\n }\n\n const response = await fetch('/oauth/decision', {\n method: 'POST',\n mode: 'cors',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json'\n },\n redirect: 'follow',\n body: JSON.stringify(data)\n })\n\n if (response.redirected) {\n location.href = response.url\n }\n }\n\n selectedRoles() {\n return this.roleSelector.selectedRoles()\n }\n}\n"]}
|
|
@@ -260,16 +260,19 @@ AppBinding.styles = [
|
|
|
260
260
|
background-color: var(--md-sys-color-background);
|
|
261
261
|
padding: var(--padding-wide);
|
|
262
262
|
}
|
|
263
|
+
|
|
263
264
|
h2 {
|
|
264
265
|
margin: var(--title-margin);
|
|
265
266
|
font: var(--title-font);
|
|
266
267
|
color: var(--title-text-color);
|
|
267
268
|
}
|
|
269
|
+
|
|
268
270
|
[page-description] {
|
|
269
271
|
margin: var(--page-description-margin);
|
|
270
272
|
font: var(--page-description-font);
|
|
271
273
|
color: var(--page-description-color);
|
|
272
274
|
}
|
|
275
|
+
|
|
273
276
|
[icon] {
|
|
274
277
|
position: absolute;
|
|
275
278
|
top: 10px;
|
|
@@ -277,68 +280,77 @@ AppBinding.styles = [
|
|
|
277
280
|
|
|
278
281
|
max-width: 80px;
|
|
279
282
|
}
|
|
283
|
+
|
|
280
284
|
[icon] img {
|
|
281
285
|
max-width: 100%;
|
|
282
286
|
max-height: 100%;
|
|
283
287
|
}
|
|
284
288
|
|
|
285
|
-
label {
|
|
286
|
-
font: var(--label-font);
|
|
287
|
-
color: var(--label-color, var(--md-sys-color-on-surface));
|
|
288
|
-
text-transform: var(--label-text-transform);
|
|
289
|
-
}
|
|
290
|
-
input {
|
|
291
|
-
border: var(--border-dim-color);
|
|
292
|
-
border-radius: var(--border-radius);
|
|
293
|
-
margin: var(--input-margin);
|
|
294
|
-
padding: var(--input-padding);
|
|
295
|
-
font: var(--input-font);
|
|
296
|
-
|
|
297
|
-
flex: 1;
|
|
298
|
-
}
|
|
299
|
-
select:focus,
|
|
300
|
-
input:focus,
|
|
301
|
-
button {
|
|
302
|
-
outline: none;
|
|
303
|
-
}
|
|
304
|
-
form {
|
|
305
|
-
max-width: var(--content-container-max-width);
|
|
306
|
-
}
|
|
307
289
|
[fieldset-container] {
|
|
308
290
|
background-color: var(--md-sys-color-surface);
|
|
309
291
|
margin: var(--margin-wide) 0 var(--margin-default) 0;
|
|
310
292
|
padding: var(--padding-default);
|
|
311
293
|
border-radius: var(--border-radius);
|
|
312
294
|
box-shadow: var(--box-shadow);
|
|
295
|
+
|
|
296
|
+
label {
|
|
297
|
+
font: var(--label-font);
|
|
298
|
+
color: var(--label-color, var(--md-sys-color-on-surface));
|
|
299
|
+
text-transform: var(--label-text-transform);
|
|
300
|
+
}
|
|
301
|
+
input {
|
|
302
|
+
border: var(--border-dim-color);
|
|
303
|
+
border-radius: var(--border-radius);
|
|
304
|
+
margin: var(--input-margin);
|
|
305
|
+
padding: var(--input-padding);
|
|
306
|
+
font: var(--input-font);
|
|
307
|
+
|
|
308
|
+
flex: 1;
|
|
309
|
+
}
|
|
310
|
+
select:focus,
|
|
311
|
+
input:focus,
|
|
312
|
+
button {
|
|
313
|
+
outline: none;
|
|
314
|
+
}
|
|
315
|
+
form {
|
|
316
|
+
max-width: var(--content-container-max-width);
|
|
317
|
+
}
|
|
313
318
|
}
|
|
319
|
+
|
|
314
320
|
[fieldset-container] fieldset {
|
|
315
321
|
margin: 0;
|
|
316
322
|
margin-top: -15px;
|
|
317
323
|
}
|
|
324
|
+
|
|
318
325
|
fieldset {
|
|
319
326
|
border-radius: var(--border-radius);
|
|
320
327
|
border: var(--border-dim-color);
|
|
321
328
|
margin: var(--fieldset-margin);
|
|
322
329
|
padding: var(--fieldset-padding);
|
|
323
330
|
}
|
|
331
|
+
|
|
324
332
|
legend {
|
|
325
333
|
padding: var(--legend-padding);
|
|
326
334
|
font-weight: bold;
|
|
327
335
|
color: var(--legend-color);
|
|
328
336
|
}
|
|
337
|
+
|
|
329
338
|
[field-2column] {
|
|
330
339
|
display: grid;
|
|
331
340
|
grid-template-columns: 1fr 1fr;
|
|
332
341
|
grid-gap: 15px;
|
|
333
342
|
}
|
|
343
|
+
|
|
334
344
|
[field] {
|
|
335
345
|
display: flex;
|
|
336
346
|
flex-direction: column;
|
|
337
347
|
position: relative;
|
|
338
348
|
}
|
|
349
|
+
|
|
339
350
|
[grid-span] {
|
|
340
351
|
grid-column: span 2;
|
|
341
352
|
}
|
|
353
|
+
|
|
342
354
|
button,
|
|
343
355
|
[button-in-field] {
|
|
344
356
|
background-color: var(--button-background-color);
|
|
@@ -353,10 +365,12 @@ AppBinding.styles = [
|
|
|
353
365
|
float: right;
|
|
354
366
|
text-decoration: none;
|
|
355
367
|
}
|
|
368
|
+
|
|
356
369
|
button:hover {
|
|
357
370
|
border: var(--button-activ-border);
|
|
358
371
|
box-shadow: var(--button-active-box-shadow);
|
|
359
372
|
}
|
|
373
|
+
|
|
360
374
|
[button-in-field] {
|
|
361
375
|
border-radius: 0 var(--button-border-radius) var(--button-border-radius) 0;
|
|
362
376
|
position: absolute;
|
|
@@ -364,10 +378,12 @@ AppBinding.styles = [
|
|
|
364
378
|
right: 0;
|
|
365
379
|
max-height: 36px;
|
|
366
380
|
}
|
|
381
|
+
|
|
367
382
|
[input-hint] {
|
|
368
383
|
font: var(--input-hint-font);
|
|
369
384
|
color: var(--input-hint-color);
|
|
370
385
|
}
|
|
386
|
+
|
|
371
387
|
@media screen and (max-width: 480px) {
|
|
372
388
|
[field] {
|
|
373
389
|
grid-column: span 2;
|