@c8y/ngx-components 1023.17.6 → 1023.17.8
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/fesm2022/c8y-ngx-components-actility-device-registration.mjs +16 -16
- package/fesm2022/c8y-ngx-components-advanced-software-management.mjs +7 -7
- package/fesm2022/c8y-ngx-components-ai-agent-chat.mjs +9 -9
- package/fesm2022/c8y-ngx-components-ai-ai-chat.mjs +12 -12
- package/fesm2022/c8y-ngx-components-ai.mjs +3 -3
- package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +34 -34
- package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs +4 -4
- package/fesm2022/c8y-ngx-components-alarms.mjs +76 -76
- package/fesm2022/c8y-ngx-components-api.mjs +7 -7
- package/fesm2022/c8y-ngx-components-app-logs.mjs +10 -10
- package/fesm2022/c8y-ngx-components-asset-properties.mjs +39 -39
- package/fesm2022/{c8y-ngx-components-asset-property-grid.component-CHjd7Q21.mjs → c8y-ngx-components-asset-property-grid.component-QedBlFUH.mjs} +13 -13
- package/fesm2022/{c8y-ngx-components-asset-property-grid.component-CHjd7Q21.mjs.map → c8y-ngx-components-asset-property-grid.component-QedBlFUH.mjs.map} +1 -1
- package/fesm2022/c8y-ngx-components-assets-navigator.mjs +32 -32
- package/fesm2022/c8y-ngx-components-auth-configuration.mjs +114 -114
- package/fesm2022/c8y-ngx-components-binary-file-download.mjs +7 -7
- package/fesm2022/c8y-ngx-components-bookmarks.mjs +13 -13
- package/fesm2022/c8y-ngx-components-branding-base-branding.mjs +4 -4
- package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs +7 -7
- package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs +7 -7
- package/fesm2022/c8y-ngx-components-branding-plain-branding-editor-lazy.mjs +3 -3
- package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs +7 -7
- package/fesm2022/c8y-ngx-components-branding-shared-data.mjs +15 -15
- package/fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs +6 -6
- package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +36 -36
- package/fesm2022/c8y-ngx-components-branding-shared.mjs +13 -13
- package/fesm2022/c8y-ngx-components-child-devices.mjs +13 -13
- package/fesm2022/c8y-ngx-components-cockpit-config.mjs +40 -40
- package/fesm2022/{c8y-ngx-components-computed-asset-properties-alarm-count-config.component-Bl18pHcM.mjs → c8y-ngx-components-computed-asset-properties-alarm-count-config.component-SA0syLy7.mjs} +4 -4
- package/fesm2022/{c8y-ngx-components-computed-asset-properties-alarm-count-config.component-Bl18pHcM.mjs.map → c8y-ngx-components-computed-asset-properties-alarm-count-config.component-SA0syLy7.mjs.map} +1 -1
- package/fesm2022/{c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-C5QMFdX1.mjs → c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-BOmgJI14.mjs} +4 -4
- package/fesm2022/{c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-C5QMFdX1.mjs.map → c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-BOmgJI14.mjs.map} +1 -1
- package/fesm2022/{c8y-ngx-components-computed-asset-properties-event-count-config.component-C-Lc5Ble.mjs → c8y-ngx-components-computed-asset-properties-event-count-config.component-CaTb9cph.mjs} +4 -4
- package/fesm2022/{c8y-ngx-components-computed-asset-properties-event-count-config.component-C-Lc5Ble.mjs.map → c8y-ngx-components-computed-asset-properties-event-count-config.component-CaTb9cph.mjs.map} +1 -1
- package/fesm2022/{c8y-ngx-components-computed-asset-properties-last-measurement-config.component-BXfM7hTQ.mjs → c8y-ngx-components-computed-asset-properties-last-measurement-config.component-DkrSvf9F.mjs} +4 -4
- package/fesm2022/{c8y-ngx-components-computed-asset-properties-last-measurement-config.component-BXfM7hTQ.mjs.map → c8y-ngx-components-computed-asset-properties-last-measurement-config.component-DkrSvf9F.mjs.map} +1 -1
- package/fesm2022/c8y-ngx-components-computed-asset-properties.mjs +6 -6
- package/fesm2022/c8y-ngx-components-connectivity.mjs +53 -53
- package/fesm2022/c8y-ngx-components-context-dashboard-asset-add.mjs +10 -10
- package/fesm2022/c8y-ngx-components-context-dashboard-asset-view.mjs +7 -7
- package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs +11 -11
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-BuGMpNrA.mjs → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-DM3hASUP.mjs} +4 -4
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-BuGMpNrA.mjs.map → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-DM3hASUP.mjs.map} +1 -1
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DN-f35bA.mjs → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-CC5346kW.mjs} +10 -10
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DN-f35bA.mjs.map → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-CC5346kW.mjs.map} +1 -1
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-BlIVEV__.mjs → c8y-ngx-components-context-dashboard-dashboard-version-history.component-CHuc--XM.mjs} +4 -4
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-BlIVEV__.mjs.map → c8y-ngx-components-context-dashboard-dashboard-version-history.component-CHuc--XM.mjs.map} +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard-device-add.mjs +10 -10
- package/fesm2022/c8y-ngx-components-context-dashboard-device-view.mjs +7 -7
- package/fesm2022/c8y-ngx-components-context-dashboard-devicemanagement.mjs +3 -3
- package/fesm2022/c8y-ngx-components-context-dashboard-state.mjs +3 -3
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs +102 -102
- package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-m7YeEj9R.mjs → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-D0C7SH6L.mjs} +16 -16
- package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-m7YeEj9R.mjs.map → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-D0C7SH6L.mjs.map} +1 -1
- package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs +12 -12
- package/fesm2022/c8y-ngx-components-dashboard-manager-devicemanagement.mjs +6 -6
- package/fesm2022/c8y-ngx-components-dashboard-manager.mjs +22 -22
- package/fesm2022/c8y-ngx-components-data-broker.mjs +7 -7
- package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs +3 -3
- package/fesm2022/c8y-ngx-components-data-grid-columns.mjs +3 -3
- package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +24 -24
- package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs +13 -13
- package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs +3 -3
- package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs +3 -3
- package/fesm2022/c8y-ngx-components-datapoint-library-services.mjs +3 -3
- package/fesm2022/c8y-ngx-components-datapoint-library.mjs +4 -4
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +40 -40
- package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +33 -33
- package/fesm2022/c8y-ngx-components-default-subscriptions.mjs +16 -16
- package/fesm2022/c8y-ngx-components-device-grid.mjs +43 -43
- package/fesm2022/c8y-ngx-components-device-list.mjs +22 -22
- package/fesm2022/c8y-ngx-components-device-map.mjs +12 -12
- package/fesm2022/c8y-ngx-components-device-profile.mjs +34 -34
- package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs +3 -3
- package/fesm2022/c8y-ngx-components-device-protocols.mjs +16 -16
- package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +13 -13
- package/fesm2022/c8y-ngx-components-device-shell.mjs +31 -31
- package/fesm2022/c8y-ngx-components-diagnostics.mjs +13 -13
- package/fesm2022/c8y-ngx-components-echart.mjs +30 -30
- package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +43 -43
- package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs +7 -7
- package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs +10 -10
- package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs +7 -7
- package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +46 -46
- package/fesm2022/c8y-ngx-components-ecosystem.mjs +82 -82
- package/fesm2022/c8y-ngx-components-editor.mjs +6 -6
- package/fesm2022/c8y-ngx-components-events-events-timeline.mjs +3 -3
- package/fesm2022/c8y-ngx-components-events.mjs +3 -3
- package/fesm2022/c8y-ngx-components-exports-list.mjs +6 -6
- package/fesm2022/c8y-ngx-components-file-preview.mjs +7 -7
- package/fesm2022/c8y-ngx-components-files-repository.mjs +19 -19
- package/fesm2022/c8y-ngx-components-global-context.mjs +130 -130
- package/fesm2022/c8y-ngx-components-group-breadcrumbs.mjs +6 -6
- package/fesm2022/c8y-ngx-components-icon-selector.mjs +19 -19
- package/fesm2022/c8y-ngx-components-interval-picker.mjs +3 -3
- package/fesm2022/c8y-ngx-components-location.mjs +28 -28
- package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs +16 -16
- package/fesm2022/c8y-ngx-components-map.mjs +19 -19
- package/fesm2022/c8y-ngx-components-messaging-management.mjs +55 -55
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs +19 -19
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations-bulk-operations-service.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs +3 -3
- package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-device-selector.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs +12 -12
- package/fesm2022/c8y-ngx-components-operations-operation-details.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations-operation-summary.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs +10 -10
- package/fesm2022/c8y-ngx-components-operations-operations-list.mjs +12 -12
- package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-shared.mjs +10 -10
- package/fesm2022/c8y-ngx-components-operations-status-filter.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs +7 -7
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations-stepper-frames.mjs +13 -13
- package/fesm2022/c8y-ngx-components-operations.mjs +7 -7
- package/fesm2022/c8y-ngx-components-pending-mo-request.mjs +7 -7
- package/fesm2022/c8y-ngx-components-platform-configuration.mjs +10 -10
- package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs +38 -38
- package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +58 -58
- package/fesm2022/c8y-ngx-components-register-device.mjs +58 -58
- package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs +9 -9
- package/fesm2022/c8y-ngx-components-remote-access-data.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-shared.mjs +6 -6
- package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +6 -6
- package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs +3 -3
- package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs +6 -6
- package/fesm2022/c8y-ngx-components-replace-device.mjs +10 -10
- package/fesm2022/c8y-ngx-components-report-dashboard.mjs +16 -16
- package/fesm2022/c8y-ngx-components-reports.mjs +19 -19
- package/fesm2022/c8y-ngx-components-repository-configuration.mjs +48 -48
- package/fesm2022/c8y-ngx-components-repository-firmware.mjs +33 -33
- package/fesm2022/c8y-ngx-components-repository-shared.mjs +34 -34
- package/fesm2022/c8y-ngx-components-repository-software.mjs +42 -42
- package/fesm2022/c8y-ngx-components-repository.mjs +4 -4
- package/fesm2022/c8y-ngx-components-search.mjs +19 -19
- package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs +6 -6
- package/fesm2022/c8y-ngx-components-sensor-phone.mjs +7 -7
- package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs +3 -3
- package/fesm2022/c8y-ngx-components-services-shared.mjs +3 -3
- package/fesm2022/c8y-ngx-components-services.mjs +29 -29
- package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs +16 -16
- package/fesm2022/c8y-ngx-components-sms-gateway.mjs +7 -7
- package/fesm2022/c8y-ngx-components-static-assets-data.mjs +3 -3
- package/fesm2022/c8y-ngx-components-static-assets-modal.mjs +9 -9
- package/fesm2022/c8y-ngx-components-static-assets.mjs +6 -6
- package/fesm2022/c8y-ngx-components-sub-assets.mjs +60 -60
- package/fesm2022/c8y-ngx-components-tenants.mjs +40 -40
- package/fesm2022/c8y-ngx-components-time-context.mjs +6 -6
- package/fesm2022/c8y-ngx-components-tracking.mjs +12 -12
- package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +3 -3
- package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +12 -12
- package/fesm2022/c8y-ngx-components-translation-editor.mjs +6 -6
- package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +33 -33
- package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs +4 -4
- package/fesm2022/c8y-ngx-components-upgrade.mjs +41 -41
- package/fesm2022/c8y-ngx-components-user-roles.mjs +10 -10
- package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs +3 -3
- package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget-ai-config.mjs +3 -3
- package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs +6 -6
- package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +19 -19
- package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs +3 -3
- package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-legacy-welcome.mjs +3 -3
- package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs +3 -3
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +6 -6
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +27 -27
- package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs +3 -3
- package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs +7 -7
- package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs +3 -3
- package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs +24 -24
- package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs +9 -9
- package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs +18 -18
- package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs +6 -6
- package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs +6 -6
- package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +9 -9
- package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs +9 -9
- package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs +18 -18
- package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation.mjs +9 -9
- package/fesm2022/c8y-ngx-components.mjs +1371 -1371
- package/package.json +1 -1
|
@@ -94,10 +94,10 @@ class BasicAuthSettingsComponent {
|
|
|
94
94
|
}
|
|
95
95
|
return newArray;
|
|
96
96
|
}
|
|
97
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
98
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
97
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BasicAuthSettingsComponent, deps: [{ token: i1.ControlContainer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
98
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: BasicAuthSettingsComponent, isStandalone: true, selector: "c8y-basic-auth-settings", inputs: { authConfiguration: "authConfiguration" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"card-block separator-top\"\n *ngIf=\"authConfiguration.preferredLoginOptionType !== 'BASIC'\"\n>\n <div class=\"col-sm-2\">\n <div class=\"h4 text-normal text-right text-left-xs\">\n {{ 'Basic Auth restrictions' | translate }}\n </div>\n </div>\n\n <div class=\"col-sm-9\">\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label class=\"c8y-switch\" title=\"{{ 'Forbidden for web browsers' | translate }}\">\n <input type=\"checkbox\" name=\"forbiddenWebBrowsers\" [(ngModel)]=\"forbiddenWebBrowsers\" />\n <span></span>\n <span>{{ 'Forbidden for web browsers' | translate }}</span>\n </label>\n <div\n class=\"alert alert-warning\"\n *ngIf=\"\n preferredLoginOptionType === tenantLoginOptionTypeEnum.BASIC && forbiddenWebBrowsers\n \"\n >\n {{\n 'You are about to forbid browsers from using Basic authentication. This will prevent users from using web applications on your tenant because you are going to set Basic authentication as the preferred login mode.'\n | translate\n }}\n </div>\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <label title=\"{{ 'Forbidden user agents' | translate }}\">\n {{ 'Forbidden user agents' | translate }}\n </label>\n <div\n class=\"input-group m-t-8\"\n *ngFor=\"\n let forbiddenUserAgent of authenticationRestrictions.forbiddenUserAgents;\n last as isLast;\n first as isFirst\n \"\n >\n <input\n type=\"text\"\n [name]=\"'forbiddenUserAgent' + forbiddenUserAgent.id\"\n [(ngModel)]=\"forbiddenUserAgent.value\"\n class=\"form-control\"\n data-cy=\"c8y-basic-auth--forbidden-agent\"\n placeholder=\"{{ 'e.g.' | translate }} forbidden-agent\"\n />\n <div class=\"input-group-btn col-sm-2\">\n <button\n *ngIf=\"!(isFirst && isLast && forbiddenUserAgent.value === '')\"\n title=\"{{ 'Remove' | translate }}\"\n [name]=\"'forbiddenUserAgentRemove' + forbiddenUserAgent.id\"\n type=\"button\"\n class=\"btn btn-dot text-primary\"\n (click)=\"forbiddenUserAgentsRemove(forbiddenUserAgent.id)\"\n >\n <i class=\"dlt-c8y-icon-minus-circle text-danger\"></i>\n </button>\n <button\n title=\"{{ 'Add' | translate }}\"\n type=\"button\"\n class=\"btn btn-dot text-primary\"\n (click)=\"add(authenticationRestrictions.forbiddenUserAgents)\"\n *ngIf=\"isLast\"\n >\n <i class=\"dlt-c8y-icon-plus-circle\"></i>\n </button>\n </div>\n </div>\n </div>\n <div class=\"col-sm-6\">\n <label title=\"{{ 'Trusted user agents' | translate }}\">\n {{ 'Trusted user agents' | translate }}\n </label>\n <div\n class=\"input-group m-t-8\"\n *ngFor=\"\n let trustedUserAgent of authenticationRestrictions.trustedUserAgents;\n last as isLast;\n first as isFirst\n \"\n >\n <input\n type=\"text\"\n [name]=\"'trustedUserAgent' + trustedUserAgent.id\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} trusted-agent\"\n data-cy=\"c8y-basic-auth--trusted-agent\"\n [(ngModel)]=\"trustedUserAgent.value\"\n />\n <div class=\"input-group-btn col-sm-2\">\n <button\n *ngIf=\"!(isFirst && isLast && trustedUserAgent.value === '')\"\n title=\"{{ 'Remove' | translate }}\"\n [name]=\"'trustedUserAgentRemove' + trustedUserAgent.id\"\n type=\"button\"\n class=\"btn btn-dot btn-dot--danger text-primary\"\n (click)=\"trustedUserAgentsRemove(trustedUserAgent.id)\"\n >\n <i class=\"dlt-c8y-icon-minus-circle\"></i>\n </button>\n <button\n title=\"{{ 'Add' | translate }}\"\n type=\"button\"\n (click)=\"add(authenticationRestrictions.trustedUserAgents)\"\n class=\"btn btn-dot text-primary\"\n *ngIf=\"isLast\"\n >\n <i class=\"dlt-c8y-icon-plus-circle\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
|
|
99
99
|
}
|
|
100
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
100
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BasicAuthSettingsComponent, decorators: [{
|
|
101
101
|
type: Component,
|
|
102
102
|
args: [{ selector: 'c8y-basic-auth-settings', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], imports: [NgIf, FormGroupComponent, FormsModule, NgFor, C8yTranslatePipe], template: "<div\n class=\"card-block separator-top\"\n *ngIf=\"authConfiguration.preferredLoginOptionType !== 'BASIC'\"\n>\n <div class=\"col-sm-2\">\n <div class=\"h4 text-normal text-right text-left-xs\">\n {{ 'Basic Auth restrictions' | translate }}\n </div>\n </div>\n\n <div class=\"col-sm-9\">\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label class=\"c8y-switch\" title=\"{{ 'Forbidden for web browsers' | translate }}\">\n <input type=\"checkbox\" name=\"forbiddenWebBrowsers\" [(ngModel)]=\"forbiddenWebBrowsers\" />\n <span></span>\n <span>{{ 'Forbidden for web browsers' | translate }}</span>\n </label>\n <div\n class=\"alert alert-warning\"\n *ngIf=\"\n preferredLoginOptionType === tenantLoginOptionTypeEnum.BASIC && forbiddenWebBrowsers\n \"\n >\n {{\n 'You are about to forbid browsers from using Basic authentication. This will prevent users from using web applications on your tenant because you are going to set Basic authentication as the preferred login mode.'\n | translate\n }}\n </div>\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <label title=\"{{ 'Forbidden user agents' | translate }}\">\n {{ 'Forbidden user agents' | translate }}\n </label>\n <div\n class=\"input-group m-t-8\"\n *ngFor=\"\n let forbiddenUserAgent of authenticationRestrictions.forbiddenUserAgents;\n last as isLast;\n first as isFirst\n \"\n >\n <input\n type=\"text\"\n [name]=\"'forbiddenUserAgent' + forbiddenUserAgent.id\"\n [(ngModel)]=\"forbiddenUserAgent.value\"\n class=\"form-control\"\n data-cy=\"c8y-basic-auth--forbidden-agent\"\n placeholder=\"{{ 'e.g.' | translate }} forbidden-agent\"\n />\n <div class=\"input-group-btn col-sm-2\">\n <button\n *ngIf=\"!(isFirst && isLast && forbiddenUserAgent.value === '')\"\n title=\"{{ 'Remove' | translate }}\"\n [name]=\"'forbiddenUserAgentRemove' + forbiddenUserAgent.id\"\n type=\"button\"\n class=\"btn btn-dot text-primary\"\n (click)=\"forbiddenUserAgentsRemove(forbiddenUserAgent.id)\"\n >\n <i class=\"dlt-c8y-icon-minus-circle text-danger\"></i>\n </button>\n <button\n title=\"{{ 'Add' | translate }}\"\n type=\"button\"\n class=\"btn btn-dot text-primary\"\n (click)=\"add(authenticationRestrictions.forbiddenUserAgents)\"\n *ngIf=\"isLast\"\n >\n <i class=\"dlt-c8y-icon-plus-circle\"></i>\n </button>\n </div>\n </div>\n </div>\n <div class=\"col-sm-6\">\n <label title=\"{{ 'Trusted user agents' | translate }}\">\n {{ 'Trusted user agents' | translate }}\n </label>\n <div\n class=\"input-group m-t-8\"\n *ngFor=\"\n let trustedUserAgent of authenticationRestrictions.trustedUserAgents;\n last as isLast;\n first as isFirst\n \"\n >\n <input\n type=\"text\"\n [name]=\"'trustedUserAgent' + trustedUserAgent.id\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} trusted-agent\"\n data-cy=\"c8y-basic-auth--trusted-agent\"\n [(ngModel)]=\"trustedUserAgent.value\"\n />\n <div class=\"input-group-btn col-sm-2\">\n <button\n *ngIf=\"!(isFirst && isLast && trustedUserAgent.value === '')\"\n title=\"{{ 'Remove' | translate }}\"\n [name]=\"'trustedUserAgentRemove' + trustedUserAgent.id\"\n type=\"button\"\n class=\"btn btn-dot btn-dot--danger text-primary\"\n (click)=\"trustedUserAgentsRemove(trustedUserAgent.id)\"\n >\n <i class=\"dlt-c8y-icon-minus-circle\"></i>\n </button>\n <button\n title=\"{{ 'Add' | translate }}\"\n type=\"button\"\n (click)=\"add(authenticationRestrictions.trustedUserAgents)\"\n class=\"btn btn-dot text-primary\"\n *ngIf=\"isLast\"\n >\n <i class=\"dlt-c8y-icon-plus-circle\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
103
103
|
}], ctorParameters: () => [{ type: i1.ControlContainer }], propDecorators: { authConfiguration: [{
|
|
@@ -114,10 +114,10 @@ class AuthConfigurationGuard {
|
|
|
114
114
|
Permissions.ROLE_TENANT_MANAGEMENT_ADMIN
|
|
115
115
|
]);
|
|
116
116
|
}
|
|
117
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
118
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
117
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthConfigurationGuard, deps: [{ token: i2.Permissions }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
118
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthConfigurationGuard }); }
|
|
119
119
|
}
|
|
120
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
120
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthConfigurationGuard, decorators: [{
|
|
121
121
|
type: Injectable
|
|
122
122
|
}], ctorParameters: () => [{ type: i2.Permissions }] });
|
|
123
123
|
|
|
@@ -230,10 +230,10 @@ class TenantLoginOptionMapper {
|
|
|
230
230
|
'_type'
|
|
231
231
|
]);
|
|
232
232
|
}
|
|
233
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
234
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
233
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TenantLoginOptionMapper, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
234
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TenantLoginOptionMapper, providedIn: 'root' }); }
|
|
235
235
|
}
|
|
236
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
236
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TenantLoginOptionMapper, decorators: [{
|
|
237
237
|
type: Injectable,
|
|
238
238
|
args: [{
|
|
239
239
|
providedIn: 'root'
|
|
@@ -417,10 +417,10 @@ class AuthConfigurationService {
|
|
|
417
417
|
type: tenantLoginOptionType
|
|
418
418
|
};
|
|
419
419
|
}
|
|
420
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
421
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
420
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthConfigurationService, deps: [{ token: i1$1.TenantLoginOptionsService }, { token: i1$1.TenantOptionsService }, { token: i1$1.SystemOptionsService }, { token: i2.AppStateService }, { token: i2.TenantUiService }, { token: TenantLoginOptionMapper }, { token: i1$1.TenantService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
421
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthConfigurationService }); }
|
|
422
422
|
}
|
|
423
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
423
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthConfigurationService, decorators: [{
|
|
424
424
|
type: Injectable
|
|
425
425
|
}], ctorParameters: () => [{ type: i1$1.TenantLoginOptionsService }, { type: i1$1.TenantOptionsService }, { type: i1$1.SystemOptionsService }, { type: i2.AppStateService }, { type: i2.TenantUiService }, { type: TenantLoginOptionMapper }, { type: i1$1.TenantService }] });
|
|
426
426
|
|
|
@@ -473,10 +473,10 @@ class LoginSettingsComponent {
|
|
|
473
473
|
set tenantLoginIgnoreCase(value) {
|
|
474
474
|
this.authConfiguration.tenantOptions['configuration']['tenant.login.ignore-case'] = value;
|
|
475
475
|
}
|
|
476
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
477
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
476
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LoginSettingsComponent, deps: [{ token: i2.TenantUiService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
477
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: LoginSettingsComponent, isStandalone: true, selector: "c8y-login-settings", inputs: { authConfiguration: "authConfiguration" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"card-block separator-top overflow-auto\" *ngIf=\"authConfiguration\">\n <div class=\"col-sm-2\">\n <div class=\"h4 text-normal text-right text-left-xs\">{{ 'Login settings' | translate }}</div>\n </div>\n\n <div class=\"col-sm-9\">\n <div class=\"row m-b-8\">\n <c8y-form-group class=\"col-sm-6\">\n <label>\n {{ 'Preferred login mode' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ PREFERRED_LOGIN_MODE_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n [attr.aria-label]=\"'Auth type' | translate\"\n class=\"form-control\"\n id=\"preferredLoginOptionType\"\n name=\"preferredLoginOptionType\"\n [(ngModel)]=\"authConfiguration.preferredLoginOptionType\"\n >\n <option value=\"{{ tenantLoginOptionTypeEnum.BASIC }}\" translate>Basic Auth</option>\n <option value=\"{{ tenantLoginOptionTypeEnum.OAUTH2_INTERNAL }}\" translate>\n OAI-Secure\n </option>\n <option value=\"{{ tenantLoginOptionTypeEnum.OAUTH2 }}\" [disabled]=\"!isOauth2\" translate>\n Single sign-on redirect\n </option>\n </select>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label title=\"{{ 'Password validity limit' | translate }}\">\n {{ 'Password validity limit' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ ENFORCED_BY_PLATFORM_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n *ngIf=\"systemPasswordLimitValidity\"\n ></button>\n </label>\n <div class=\"input-group\">\n <input\n type=\"number\"\n name=\"passwordLimitValidity\"\n class=\"form-control text-right\"\n [(ngModel)]=\"passwordLimitValidity\"\n min=\"0\"\n max=\"999999\"\n step=\"1\"\n required\n [disabled]=\"systemPasswordLimitValidity\"\n />\n <span class=\"input-group-addon\" translate>days</span>\n </div>\n <p class=\"help-block\">\n {{ 'Default: 0 (unlimited validity)' | translate }}\n </p>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label title=\"{{ 'Password strength' | translate }}\">\n {{ 'Password strength' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ ENFORCED_BY_PLATFORM_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n *ngIf=\"systemPasswordEnforceStrength\"\n ></button>\n </label>\n <div>\n <label\n title=\"{{ 'Enforce that all passwords are strong' | translate }}\"\n class=\"c8y-switch\"\n >\n <input\n type=\"checkbox\"\n name=\"passwordEnforceStrength\"\n data-cy=\"c8y-form-group--password-enforce-toggle-btn\"\n [(ngModel)]=\"passwordEnforceStrength\"\n [disabled]=\"systemPasswordEnforceStrength\"\n />\n <span></span>\n <span>{{ 'Enforce strong passwords (green)' | translate }}</span>\n </label>\n </div>\n </c8y-form-group>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label\n title=\"{{ 'Ignore case when logging in' | translate }}\"\n data-cy=\"c8y-authentication-configuration--ignore-case-when-logging-in\"\n class=\"c8y-switch\"\n >\n <input\n type=\"checkbox\"\n name=\"tenantLoginIgnoreCase\"\n [(ngModel)]=\"tenantLoginIgnoreCase\"\n />\n <span></span>\n <span>{{ 'Ignore case when logging in' | translate }}</span>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ IGNORE_CASE_SENSITIVITY_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </label>\n </c8y-form-group>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: MinValidationDirective, selector: "[min]", inputs: ["min"] }, { kind: "directive", type: MaxValidationDirective, selector: "[max]", inputs: ["max"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
|
|
478
478
|
}
|
|
479
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
479
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LoginSettingsComponent, decorators: [{
|
|
480
480
|
type: Component,
|
|
481
481
|
args: [{ selector: 'c8y-login-settings', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], imports: [
|
|
482
482
|
NgIf,
|
|
@@ -590,10 +590,10 @@ class SessionConfigurationComponent {
|
|
|
590
590
|
convertToSeconds(milliseconds) {
|
|
591
591
|
return isFinite(milliseconds) ? Math.ceil(milliseconds / 1000) : null;
|
|
592
592
|
}
|
|
593
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
594
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
593
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SessionConfigurationComponent, deps: [{ token: i2.TenantUiService }, { token: i2$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
594
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: SessionConfigurationComponent, isStandalone: true, selector: "c8y-session-configuration", inputs: { authConfiguration: "authConfiguration" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"card-block separator-top overflow-auto\"\n *ngIf=\"authConfiguration.preferredLoginOptionType === tenantLoginOptionTypeEnum.OAUTH2_INTERNAL\"\n>\n <div class=\"col-sm-2\">\n <div class=\"h4 text-normal text-right text-left-xs\">\n {{ 'OAI-Secure session configuration' | translate }}\n </div>\n </div>\n\n <div class=\"col-sm-9\">\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label class=\"c8y-switch\" title=\"{{ 'Use session configuration' | translate }}\">\n <input\n type=\"checkbox\"\n name=\"useSessionConfiguration\"\n [(ngModel)]=\"useSessionConfiguration\"\n />\n <span></span>\n <span>{{ 'Use session configuration' | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n </div>\n\n <fieldset *ngIf=\"sessionConfiguration\">\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label class=\"c8y-switch\" title=\"{{ 'User agent validation required' | translate }}\">\n <input\n type=\"checkbox\"\n name=\"userAgentValidationRequired\"\n [(ngModel)]=\"userAgentValidationRequired\"\n />\n <span></span>\n <span>{{ 'User agent validation required' | translate }}</span>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ USER_AGENT_VALIDATION_REQUIRED_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </label>\n </c8y-form-group>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label title=\"{{ 'Session absolute timeout' | translate }}\">\n {{ 'Session absolute timeout' | translate }}\n </label>\n <div class=\"input-group\">\n <input\n type=\"number\"\n name=\"absoluteTimeoutSeconds\"\n class=\"form-control text-right\"\n [(ngModel)]=\"absoluteTimeoutSeconds\"\n [required]=\"useSessionConfiguration\"\n [min]=\"absoluteTimeoutConstraints.min\"\n step=\"1\"\n />\n <span class=\"input-group-addon\" translate>seconds</span>\n </div>\n <c8y-messages>\n <c8y-message\n name=\"min\"\n text=\"{{ ABSOLUTE_TIMEOUT_VALIDATION_MESSAGE | translate }}\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label title=\"{{ 'Session renewal timeout' | translate }}\">\n {{ 'Session renewal timeout' | translate }}\n </label>\n <div class=\"input-group\">\n <input\n type=\"number\"\n name=\"renewalTimeoutSeconds\"\n class=\"form-control text-right\"\n [(ngModel)]=\"renewalTimeoutSeconds\"\n [required]=\"useSessionConfiguration\"\n [max]=\"renewalTimeoutConstraints.max\"\n [min]=\"renewalTimeoutConstraints.min\"\n step=\"1\"\n />\n <span class=\"input-group-addon\" translate>seconds</span>\n </div>\n <c8y-messages>\n <c8y-message\n name=\"max\"\n text=\"{{ RENEWAL_TIMEOUT_VALIDATION_MESSAGE | translate }}\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label title=\"{{ 'Maximum parallel sessions per user' | translate }}\">\n {{ 'Maximum parallel sessions per user' | translate }}\n </label>\n <div class=\"input-group\">\n <input\n type=\"number\"\n name=\"maximumNumberOfParallelSessions\"\n class=\"form-control text-right\"\n [(ngModel)]=\"maximumNumberOfParallelSessions\"\n [required]=\"useSessionConfiguration\"\n [min]=\"1\"\n step=\"1\"\n />\n <span class=\"input-group-addon\" translate>sessions</span>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label title=\"{{ 'Token lifespan' | translate }}\">\n {{ 'Token lifespan' | translate }}\n </label>\n <div class=\"input-group\">\n <input\n type=\"number\"\n name=\"basicTokenLifespan\"\n class=\"form-control text-right\"\n [(ngModel)]=\"basicTokenLifespan\"\n [required]=\"useSessionConfiguration\"\n [max]=\"basicTokenLifespanConstraints.max\"\n [min]=\"basicTokenLifespanConstraints.min\"\n step=\"1\"\n />\n <span class=\"input-group-addon\" translate>seconds</span>\n </div>\n <c8y-messages>\n <c8y-message\n name=\"max\"\n text=\"{{ MAX_TOKEN_LIFESPAN_VALIDATION_MESSAGE | translate }}\"\n ></c8y-message>\n <c8y-message\n name=\"min\"\n text=\"{{ MIN_TOKEN_LIFESPAN_VALIDATION_MESSAGE | translate }}\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: MinValidationDirective, selector: "[min]", inputs: ["min"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "directive", type: MaxValidationDirective, selector: "[max]", inputs: ["max"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
|
|
595
595
|
}
|
|
596
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
596
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SessionConfigurationComponent, decorators: [{
|
|
597
597
|
type: Component,
|
|
598
598
|
args: [{ selector: 'c8y-session-configuration', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], imports: [
|
|
599
599
|
NgIf,
|
|
@@ -708,10 +708,10 @@ class TfaSettingsComponent {
|
|
|
708
708
|
return ((this.tfaState !== this.tfaStateEnum.TFA_UNDEFINED_BY_SYSTEM || this.tenantTfaEnabled) &&
|
|
709
709
|
this.preferredLoginOptionType === TenantLoginOptionType.OAUTH2_INTERNAL);
|
|
710
710
|
}
|
|
711
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
712
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: TfaSettingsComponent, isStandalone: true, selector: "c8y-auth-tfa", inputs: { authConfiguration: "authConfiguration" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"card-block separator-top\"\n *ngIf=\"preferredLoginOptionType !== tenantLoginOptionTypeEnum.OAUTH2\"\n>\n <div class=\"col-sm-2\">\n <div class=\"h4 text-normal text-right text-left-xs\">\n {{ 'Two-factor authentication' | translate }}\n </div>\n </div>\n\n <div class=\"col-sm-9\">\n <c8y-form-group>\n <label\n class=\"c8y-switch\"\n title=\"{{ 'Enable two-factor authentication' | translate }}\"\n *ngIf=\"\n tfaState === tfaStateEnum.TFA_UNDEFINED_BY_SYSTEM;\n else enabledOrEnforcedOnSystemLevelTemplate\n \"\n >\n <input type=\"checkbox\" [(ngModel)]=\"tenantTfaEnabled\" name=\"tenantTfaEnabled\" />\n <span></span>\n <span>{{ 'Enable' | translate }}</span>\n </label>\n\n <ng-template #enabledOrEnforcedOnSystemLevelTemplate>\n <div [ngSwitch]=\"tfaState\">\n <span *ngSwitchCase=\"tfaStateEnum.TFA_ENABLED_BY_SYSTEM\">\n {{ 'Two-factor authentication is enabled on all users' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ TFA_IS_ENABLED_BY_SYSTEM_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n ></button>\n </span>\n <div *ngSwitchCase=\"tfaStateEnum.TFA_ENFORCED_BY_SYSTEM\">\n <span>\n {{ 'Two-factor authentication is enforced on all users' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ TFA_IS_ENFORCED_BY_SYSTEM_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n ></button>\n </span>\n </div>\n <div *ngSwitchCase=\"tfaStateEnum.TFA_ENFORCED_FOR_GROUP\">\n <span>\n <span translate [translateParams]=\"{ role: systemTfaEnforcedGroup }\" ngNonBindable>\n Two-factor authentication is enabled on all users and enforced on users with role\n {{ role }}.\n </span>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ TFA_IS_ENABLED_BY_ENFORCE_FOR_GROUP_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n ></button>\n </span>\n </div>\n </div>\n </ng-template>\n </c8y-form-group>\n\n <fieldset *ngIf=\"tfaBySmsCanBeSet || tfaByTotpCanBeSet\">\n <div class=\"row\">\n <c8y-form-group class=\"col-sm-6\">\n <label title=\"{{ 'TFA strategy' | translate }}\">\n {{ 'TFA strategy' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ SMS_APP_NOT_SUBSCRIBED_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n *ngIf=\"!tfaBySmsCanBeSet\"\n ></button>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ TOTP_REQUIRES_OAUTH_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n *ngIf=\"!tfaByTotpCanBeSet\"\n ></button>\n </label>\n\n <div class=\"c8y-select-wrapper\">\n <select\n [attr.aria-label]=\"'TFA' | translate\"\n class=\"form-control\"\n [(ngModel)]=\"tenantTfaStrategy\"\n name=\"tenantTfaStrategy\"\n >\n <option value=\"{{ tfaStrategyEnum.SMS }}\" translate [disabled]=\"!tfaBySmsCanBeSet\">\n SMS based\n </option>\n <option value=\"{{ tfaStrategyEnum.TOTP }}\" translate [disabled]=\"!tfaByTotpCanBeSet\">\n TOTP\n </option>\n </select>\n <span></span>\n </div>\n </c8y-form-group>\n </div>\n\n <div\n class=\"row\"\n *ngIf=\"\n tenantTfaStrategy === tfaStrategyEnum.TOTP &&\n tfaState !== tfaStateEnum.TFA_ENFORCED_BY_SYSTEM\n \"\n >\n <label title=\"{{ 'Enforcement' | translate }}\">{{ 'Enforcement' | translate }}</label>\n <div class=\"form-control-static\">\n <label\n title=\"{{ 'Enforce two-factor authentication on all users' | translate }}\"\n class=\"c8y-switch\"\n >\n <input type=\"checkbox\" name=\"tenantTfaEnforced\" [(ngModel)]=\"tenantTfaEnforced\" />\n <span></span>\n <span>{{ 'Enforce two-factor authentication on all users' | translate }}</span>\n </label>\n </div>\n </div>\n\n <div class=\"row\" *ngIf=\"tenantTfaStrategy === tfaStrategyEnum.SMS\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label title=\"{{ 'Token validity limit' | translate }}\">\n {{ 'Token validity limit' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ TFA_IS_ENFORCED_BY_SYSTEM_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n *ngIf=\"!systemTfaTenantScopeSettingEnabled\"\n ></button>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ TOKEN_VALIDITY_DETERMINED_BY_JWT_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n *ngIf=\"\n systemTfaTenantScopeSettingEnabled &&\n preferredLoginOptionType === tenantLoginOptionTypeEnum.OAUTH2_INTERNAL\n \"\n ></button>\n </label>\n <div class=\"input-group\">\n <input\n type=\"number\"\n class=\"form-control text-right\"\n name=\"tenantTfaTokenValidity\"\n [(ngModel)]=\"tenantTfaTokenValidity\"\n [disabled]=\"\n !systemTfaTenantScopeSettingEnabled ||\n preferredLoginOptionType === tenantLoginOptionTypeEnum.OAUTH2_INTERNAL\n \"\n [required]=\"systemTfaTenantScopeSettingEnabled\"\n [max]=\"999999\"\n [min]=\"0\"\n />\n <span class=\"input-group-addon\" translate>minutes</span>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label title=\"{{ 'Verification code validity limit' | translate }}\">\n {{ 'Verification code validity limit' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ TFA_IS_ENFORCED_BY_SYSTEM_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n *ngIf=\"!systemTfaTenantScopeSettingEnabled\"\n ></button>\n </label>\n <div class=\"input-group\">\n <input\n type=\"number\"\n class=\"form-control text-right\"\n name=\"tenantTfaPinValidity\"\n [(ngModel)]=\"tenantTfaPinValidity\"\n [disabled]=\"!systemTfaTenantScopeSettingEnabled\"\n [required]=\"systemTfaTenantScopeSettingEnabled\"\n [max]=\"999999\"\n [min]=\"0\"\n />\n <span class=\"input-group-addon\" translate>minutes</span>\n </div>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n <div\n *ngIf=\"\n preferredLoginOptionType !== tenantLoginOptionTypeEnum.OAUTH2_INTERNAL &&\n !smsGatewayAvailable\n \"\n >\n <div class=\"alert alert-warning\">\n <strong>{{ 'None of TFA strategy can be set.' | translate }}</strong>\n <br />\n {{ SMS_APP_NOT_SUBSCRIBED_POPOVER | translate }}\n <br />\n {{ TOTP_REQUIRES_OAUTH_POPOVER | translate }}\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: MaxValidationDirective, selector: "[max]", inputs: ["max"] }, { kind: "directive", type: MinValidationDirective, selector: "[min]", inputs: ["min"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
|
|
711
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TfaSettingsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
712
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: TfaSettingsComponent, isStandalone: true, selector: "c8y-auth-tfa", inputs: { authConfiguration: "authConfiguration" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"card-block separator-top\"\n *ngIf=\"preferredLoginOptionType !== tenantLoginOptionTypeEnum.OAUTH2\"\n>\n <div class=\"col-sm-2\">\n <div class=\"h4 text-normal text-right text-left-xs\">\n {{ 'Two-factor authentication' | translate }}\n </div>\n </div>\n\n <div class=\"col-sm-9\">\n <c8y-form-group>\n <label\n class=\"c8y-switch\"\n title=\"{{ 'Enable two-factor authentication' | translate }}\"\n *ngIf=\"\n tfaState === tfaStateEnum.TFA_UNDEFINED_BY_SYSTEM;\n else enabledOrEnforcedOnSystemLevelTemplate\n \"\n >\n <input type=\"checkbox\" [(ngModel)]=\"tenantTfaEnabled\" name=\"tenantTfaEnabled\" />\n <span></span>\n <span>{{ 'Enable' | translate }}</span>\n </label>\n\n <ng-template #enabledOrEnforcedOnSystemLevelTemplate>\n <div [ngSwitch]=\"tfaState\">\n <span *ngSwitchCase=\"tfaStateEnum.TFA_ENABLED_BY_SYSTEM\">\n {{ 'Two-factor authentication is enabled on all users' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ TFA_IS_ENABLED_BY_SYSTEM_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n ></button>\n </span>\n <div *ngSwitchCase=\"tfaStateEnum.TFA_ENFORCED_BY_SYSTEM\">\n <span>\n {{ 'Two-factor authentication is enforced on all users' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ TFA_IS_ENFORCED_BY_SYSTEM_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n ></button>\n </span>\n </div>\n <div *ngSwitchCase=\"tfaStateEnum.TFA_ENFORCED_FOR_GROUP\">\n <span>\n <span translate [translateParams]=\"{ role: systemTfaEnforcedGroup }\" ngNonBindable>\n Two-factor authentication is enabled on all users and enforced on users with role\n {{ role }}.\n </span>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ TFA_IS_ENABLED_BY_ENFORCE_FOR_GROUP_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n ></button>\n </span>\n </div>\n </div>\n </ng-template>\n </c8y-form-group>\n\n <fieldset *ngIf=\"tfaBySmsCanBeSet || tfaByTotpCanBeSet\">\n <div class=\"row\">\n <c8y-form-group class=\"col-sm-6\">\n <label title=\"{{ 'TFA strategy' | translate }}\">\n {{ 'TFA strategy' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ SMS_APP_NOT_SUBSCRIBED_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n *ngIf=\"!tfaBySmsCanBeSet\"\n ></button>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ TOTP_REQUIRES_OAUTH_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n *ngIf=\"!tfaByTotpCanBeSet\"\n ></button>\n </label>\n\n <div class=\"c8y-select-wrapper\">\n <select\n [attr.aria-label]=\"'TFA' | translate\"\n class=\"form-control\"\n [(ngModel)]=\"tenantTfaStrategy\"\n name=\"tenantTfaStrategy\"\n >\n <option value=\"{{ tfaStrategyEnum.SMS }}\" translate [disabled]=\"!tfaBySmsCanBeSet\">\n SMS based\n </option>\n <option value=\"{{ tfaStrategyEnum.TOTP }}\" translate [disabled]=\"!tfaByTotpCanBeSet\">\n TOTP\n </option>\n </select>\n <span></span>\n </div>\n </c8y-form-group>\n </div>\n\n <div\n class=\"row\"\n *ngIf=\"\n tenantTfaStrategy === tfaStrategyEnum.TOTP &&\n tfaState !== tfaStateEnum.TFA_ENFORCED_BY_SYSTEM\n \"\n >\n <label title=\"{{ 'Enforcement' | translate }}\">{{ 'Enforcement' | translate }}</label>\n <div class=\"form-control-static\">\n <label\n title=\"{{ 'Enforce two-factor authentication on all users' | translate }}\"\n class=\"c8y-switch\"\n >\n <input type=\"checkbox\" name=\"tenantTfaEnforced\" [(ngModel)]=\"tenantTfaEnforced\" />\n <span></span>\n <span>{{ 'Enforce two-factor authentication on all users' | translate }}</span>\n </label>\n </div>\n </div>\n\n <div class=\"row\" *ngIf=\"tenantTfaStrategy === tfaStrategyEnum.SMS\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label title=\"{{ 'Token validity limit' | translate }}\">\n {{ 'Token validity limit' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ TFA_IS_ENFORCED_BY_SYSTEM_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n *ngIf=\"!systemTfaTenantScopeSettingEnabled\"\n ></button>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ TOKEN_VALIDITY_DETERMINED_BY_JWT_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n *ngIf=\"\n systemTfaTenantScopeSettingEnabled &&\n preferredLoginOptionType === tenantLoginOptionTypeEnum.OAUTH2_INTERNAL\n \"\n ></button>\n </label>\n <div class=\"input-group\">\n <input\n type=\"number\"\n class=\"form-control text-right\"\n name=\"tenantTfaTokenValidity\"\n [(ngModel)]=\"tenantTfaTokenValidity\"\n [disabled]=\"\n !systemTfaTenantScopeSettingEnabled ||\n preferredLoginOptionType === tenantLoginOptionTypeEnum.OAUTH2_INTERNAL\n \"\n [required]=\"systemTfaTenantScopeSettingEnabled\"\n [max]=\"999999\"\n [min]=\"0\"\n />\n <span class=\"input-group-addon\" translate>minutes</span>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label title=\"{{ 'Verification code validity limit' | translate }}\">\n {{ 'Verification code validity limit' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ TFA_IS_ENFORCED_BY_SYSTEM_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n *ngIf=\"!systemTfaTenantScopeSettingEnabled\"\n ></button>\n </label>\n <div class=\"input-group\">\n <input\n type=\"number\"\n class=\"form-control text-right\"\n name=\"tenantTfaPinValidity\"\n [(ngModel)]=\"tenantTfaPinValidity\"\n [disabled]=\"!systemTfaTenantScopeSettingEnabled\"\n [required]=\"systemTfaTenantScopeSettingEnabled\"\n [max]=\"999999\"\n [min]=\"0\"\n />\n <span class=\"input-group-addon\" translate>minutes</span>\n </div>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n <div\n *ngIf=\"\n preferredLoginOptionType !== tenantLoginOptionTypeEnum.OAUTH2_INTERNAL &&\n !smsGatewayAvailable\n \"\n >\n <div class=\"alert alert-warning\">\n <strong>{{ 'None of TFA strategy can be set.' | translate }}</strong>\n <br />\n {{ SMS_APP_NOT_SUBSCRIBED_POPOVER | translate }}\n <br />\n {{ TOTP_REQUIRES_OAUTH_POPOVER | translate }}\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: MaxValidationDirective, selector: "[max]", inputs: ["max"] }, { kind: "directive", type: MinValidationDirective, selector: "[min]", inputs: ["min"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
|
|
713
713
|
}
|
|
714
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
714
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TfaSettingsComponent, decorators: [{
|
|
715
715
|
type: Component,
|
|
716
716
|
args: [{ selector: 'c8y-auth-tfa', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], imports: [
|
|
717
717
|
NgIf,
|
|
@@ -765,10 +765,10 @@ class AuthConfigurationComponent {
|
|
|
765
765
|
}
|
|
766
766
|
}
|
|
767
767
|
}
|
|
768
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
769
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
768
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthConfigurationComponent, deps: [{ token: AuthConfigurationService }, { token: i2.ModalService }, { token: i2.SimplifiedAuthService }, { token: i2.AlertService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
769
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: AuthConfigurationComponent, isStandalone: true, selector: "c8y-auth-configuration", ngImport: i0, template: "<c8y-title>{{ 'Authentication' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'cog'\"\n [label]=\"'Settings' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'cog'\"\n [label]=\"'Authentication' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n (click)=\"loadAuthConfig()\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': reloading$ | async }\"\n ></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/docs/authentication/basic-settings/#basic-settings\"></c8y-help>\n\n<form\n class=\"card card--fullpage\"\n #authConfigurationForm=\"ngForm\"\n novalidate\n>\n <div class=\"card-header separator\">\n <div class=\"card-title\">\n {{ 'Authentication' | translate }}\n </div>\n </div>\n <div\n class=\"inner-scroll\"\n *ngIf=\"authConfiguration\"\n >\n <c8y-login-settings [authConfiguration]=\"authConfiguration\"></c8y-login-settings>\n <c8y-basic-auth-settings [authConfiguration]=\"authConfiguration\"></c8y-basic-auth-settings>\n <c8y-session-configuration [authConfiguration]=\"authConfiguration\"></c8y-session-configuration>\n <c8y-auth-tfa [authConfiguration]=\"authConfiguration\"></c8y-auth-tfa>\n </div>\n <div class=\"card-footer separator\">\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n (click)=\"save()\"\n [disabled]=\"!authConfigurationForm.form.valid || authConfigurationForm.form.pristine\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</form>\n", dependencies: [{ kind: "component", type: TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LoginSettingsComponent, selector: "c8y-login-settings", inputs: ["authConfiguration"] }, { kind: "component", type: BasicAuthSettingsComponent, selector: "c8y-basic-auth-settings", inputs: ["authConfiguration"] }, { kind: "component", type: SessionConfigurationComponent, selector: "c8y-session-configuration", inputs: ["authConfiguration"] }, { kind: "component", type: TfaSettingsComponent, selector: "c8y-auth-tfa", inputs: ["authConfiguration"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
|
|
770
770
|
}
|
|
771
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
771
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthConfigurationComponent, decorators: [{
|
|
772
772
|
type: Component,
|
|
773
773
|
args: [{ selector: 'c8y-auth-configuration', imports: [
|
|
774
774
|
TitleComponent,
|
|
@@ -790,15 +790,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
790
790
|
}], ctorParameters: () => [{ type: AuthConfigurationService }, { type: i2.ModalService }, { type: i2.SimplifiedAuthService }, { type: i2.AlertService }] });
|
|
791
791
|
|
|
792
792
|
class BasicSettingsModule {
|
|
793
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
794
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.
|
|
793
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BasicSettingsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
794
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: BasicSettingsModule, imports: [CoreModule,
|
|
795
795
|
PopoverModule,
|
|
796
796
|
SessionConfigurationComponent,
|
|
797
797
|
LoginSettingsComponent,
|
|
798
798
|
BasicAuthSettingsComponent,
|
|
799
799
|
AuthConfigurationComponent,
|
|
800
800
|
TfaSettingsComponent] }); }
|
|
801
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.
|
|
801
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BasicSettingsModule, providers: [
|
|
802
802
|
AuthConfigurationService,
|
|
803
803
|
TenantLoginOptionMapper,
|
|
804
804
|
hookRoute({
|
|
@@ -814,7 +814,7 @@ class BasicSettingsModule {
|
|
|
814
814
|
AuthConfigurationComponent,
|
|
815
815
|
TfaSettingsComponent] }); }
|
|
816
816
|
}
|
|
817
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
817
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BasicSettingsModule, decorators: [{
|
|
818
818
|
type: NgModule,
|
|
819
819
|
args: [{
|
|
820
820
|
exports: [],
|
|
@@ -964,10 +964,10 @@ class SsoConfigurationService {
|
|
|
964
964
|
save(ssoConfiguration) {
|
|
965
965
|
return this.loginOptionsService.save(ssoConfiguration);
|
|
966
966
|
}
|
|
967
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
968
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
967
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SsoConfigurationService, deps: [{ token: i1$1.TenantLoginOptionsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
968
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SsoConfigurationService, providedIn: 'root' }); }
|
|
969
969
|
}
|
|
970
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
970
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SsoConfigurationService, decorators: [{
|
|
971
971
|
type: Injectable,
|
|
972
972
|
args: [{
|
|
973
973
|
providedIn: 'root'
|
|
@@ -1269,10 +1269,10 @@ class CustomConfigurationMapper {
|
|
|
1269
1269
|
useIdToken: ssoConfiguration.useIdToken
|
|
1270
1270
|
};
|
|
1271
1271
|
}
|
|
1272
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1273
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
1272
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CustomConfigurationMapper, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1273
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CustomConfigurationMapper, providedIn: 'root' }); }
|
|
1274
1274
|
}
|
|
1275
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1275
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CustomConfigurationMapper, decorators: [{
|
|
1276
1276
|
type: Injectable,
|
|
1277
1277
|
args: [{
|
|
1278
1278
|
providedIn: 'root'
|
|
@@ -1280,10 +1280,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
1280
1280
|
}] });
|
|
1281
1281
|
|
|
1282
1282
|
class SsoConfigurationMapper {
|
|
1283
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1284
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
1283
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SsoConfigurationMapper, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1284
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SsoConfigurationMapper, providedIn: 'root' }); }
|
|
1285
1285
|
}
|
|
1286
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1286
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SsoConfigurationMapper, decorators: [{
|
|
1287
1287
|
type: Injectable,
|
|
1288
1288
|
args: [{ providedIn: 'root' }]
|
|
1289
1289
|
}] });
|
|
@@ -1316,10 +1316,10 @@ class TemplateComponent {
|
|
|
1316
1316
|
}
|
|
1317
1317
|
this.ssoConfigurationChange.emit(ssoConfiguration);
|
|
1318
1318
|
}
|
|
1319
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1320
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
1319
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TemplateComponent, deps: [{ token: SsoConfigurationMapper }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1320
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: TemplateComponent, isStandalone: true, selector: "ng-component", inputs: { apps: "apps", groups: "groups", inventoryRoles: "inventoryRoles", ssoConfiguration: "ssoConfiguration", ssoConfigurationChangeTrigger: "ssoConfigurationChangeTrigger" }, outputs: { ssoConfigurationChange: "ssoConfigurationChange" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true }); }
|
|
1321
1321
|
}
|
|
1322
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1322
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TemplateComponent, decorators: [{
|
|
1323
1323
|
type: Component,
|
|
1324
1324
|
args: [{
|
|
1325
1325
|
template: '',
|
|
@@ -1363,8 +1363,8 @@ class RequestConfigurationComponent {
|
|
|
1363
1363
|
get showBody() {
|
|
1364
1364
|
return this.requestConfiguration.method === 'POST' && this.requestType !== 'logoutRequest';
|
|
1365
1365
|
}
|
|
1366
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1367
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: RequestConfigurationComponent, isStandalone: true, selector: "c8y-request-configuration", inputs: { templateModel: "templateModel", requestName: "requestName", requestType: "requestType" }, ngImport: i0, template: "<fieldset\n class=\"p-24\"\n ngModelGroup=\"{{ requestName }}\"\n id=\"{{ requestType }}\"\n>\n <div class=\"row\">\n <div\n class=\"col-xs-12 col-sm-3 col-md-2 m-b-xs-8\"\n *ngIf=\"requestType !== 'tokenValidationRequest'\"\n >\n <div class=\"h4 text-normal text-right text-left-xs\">\n {{ requestName }}\n </div>\n </div>\n\n <div\n [ngClass]=\"\n requestType !== 'tokenValidationRequest' ? 'col-xs-12 col-sm-9 col-md-10 col-lg-9' : ''\n \"\n *ngIf=\"templateModel\"\n >\n <fieldset [ngClass]=\"requestType === 'tokenValidationRequest' ? 'c8y-fieldset p-24' : ''\">\n <legend *ngIf=\"requestType === 'tokenValidationRequest'\">\n {{ requestName }}\n </legend>\n\n <c8y-form-group>\n <label\n [for]=\"requestType + 'url'\"\n class=\"control-label\"\n translate\n >\n URL\n </label>\n <input\n type=\"url\"\n class=\"form-control\"\n name=\"url\"\n [id]=\"requestType + 'url'\"\n [(ngModel)]=\"requestConfiguration.url\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'http://www.example.com/' }\"\n c8yDefaultValidation=\"httpUrl\"\n [required]=\"requestType !== 'logoutRequest'\"\n />\n </c8y-form-group>\n\n <c8y-form-group *ngIf=\"showBody\">\n <label\n [for]=\"requestType + 'body'\"\n class=\"control-label\"\n translate\n >\n Body\n </label>\n <input\n type=\"text\"\n class=\"form-control\"\n name=\"body\"\n [id]=\"requestType + 'body'\"\n [(ngModel)]=\"requestConfiguration.body\"\n required\n />\n </c8y-form-group>\n </fieldset>\n\n <fieldset\n class=\"c8y-fieldset p-24\"\n *ngIf=\"requestType !== 'logoutRequest'\"\n >\n <legend translate>Headers</legend>\n <div\n class=\"tight-grid visible-md visible-lg\"\n *ngIf=\"requestConfiguration.headers.length > 0\"\n >\n <div class=\"col-md-6\">\n <p class=\"text-medium\">\n {{ 'Key' | translate }}\n </p>\n </div>\n <div class=\"col-md-5\">\n <p class=\"text-medium\">\n {{ 'Value' | translate }}\n </p>\n </div>\n </div>\n <div\n class=\"tight-grid\"\n data-cy=\"c8y-authentication-single-sign-on--request-header\"\n *ngFor=\"let header of requestConfiguration.headers; index as headerIndex\"\n >\n <div class=\"col-md-6\">\n <c8y-form-group>\n <label\n [for]=\"requestType + 'headerKey' + headerIndex\"\n class=\"visible-sm visible-xs\"\n translate\n >\n Key\n </label>\n <input\n class=\"form-control\"\n [name]=\"'headerKey' + headerIndex\"\n [id]=\"requestType + 'headerKey' + headerIndex\"\n [(ngModel)]=\"header.key\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'Authorization' }\"\n required\n />\n </c8y-form-group>\n </div>\n <div class=\"col-md-5\">\n <c8y-form-group>\n <label\n [for]=\"requestType + 'headerValue' + headerIndex\"\n class=\"visible-sm visible-xs\"\n translate\n >\n Value\n </label>\n <input\n class=\"form-control\"\n [name]=\"'headerValue' + headerIndex\"\n [id]=\"requestType + 'headerValue' + headerIndex\"\n [(ngModel)]=\"header.value\"\n [placeholder]=\"\n 'e.g. {{ example }}' | translate: { example: 'Basic USY7jW9jb2RlX2=' }\n \"\n required\n />\n </c8y-form-group>\n </div>\n <div class=\"col-md-1\">\n <c8y-form-group>\n <button\n class=\"btn btn-link hidden-xs hidden-sm\"\n type=\"button\"\n title=\"{{ 'Remove' | translate }}\"\n (click)=\"removeCustomValue(requestConfiguration.headers, header)\"\n >\n <i\n c8yIcon=\"minus-circle\"\n class=\"text-danger\"\n ></i>\n </button>\n <button\n class=\"btn btn-danger btn-block btn-sm visible-xs visible-sm\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n (click)=\"removeCustomValue(requestConfiguration.headers, header)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n <span translate>Remove</span>\n </button>\n </c8y-form-group>\n </div>\n </div>\n <button\n class=\"btn btn-default m-t-8\"\n type=\"button\"\n title=\"{{ 'Add header' | translate }}\"\n (click)=\"addCustomValue(requestConfiguration.headers)\"\n >\n <i\n c8yIcon=\"plus-circle\"\n class=\"m-r-4\"\n ></i>\n <span translate>Add header</span>\n </button>\n </fieldset>\n\n <fieldset class=\"c8y-fieldset p-24\">\n <legend translate>Request parameters</legend>\n <div\n class=\"tight-grid visible-md visible-lg\"\n *ngIf=\"requestConfiguration.requestParams.length > 0\"\n >\n <div class=\"col-md-6\">\n <p class=\"text-medium\">\n {{ 'Key' | translate }}\n </p>\n </div>\n <div class=\"col-md-5\">\n <p class=\"text-medium\">\n {{ 'Value' | translate }}\n </p>\n </div>\n </div>\n <div\n class=\"tight-grid\"\n data-cy=\"c8y-authentication-single-sign-on--request-parameter\"\n *ngFor=\"let requestParam of requestConfiguration.requestParams; index as paramIndex\"\n >\n <div class=\"col-md-6\">\n <c8y-form-group>\n <label\n [for]=\"requestType + 'paramKey' + paramIndex\"\n class=\"visible-sm visible-xs\"\n translate\n >\n Key\n </label>\n <input\n class=\"form-control\"\n [name]=\"'paramKey' + paramIndex\"\n [id]=\"requestType + 'paramKey' + paramIndex\"\n [(ngModel)]=\"requestParam.key\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'client_id' }\"\n required\n />\n </c8y-form-group>\n </div>\n\n <div class=\"col-md-5\">\n <c8y-form-group>\n <label\n [for]=\"requestType + 'paramValue' + paramIndex\"\n class=\"visible-sm visible-xs\"\n translate\n >\n Value\n </label>\n <input\n class=\"form-control\"\n [name]=\"'paramValue' + paramIndex\"\n [id]=\"requestType + 'paramValue' + paramIndex\"\n [(ngModel)]=\"requestParam.value\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: '${clientId}' }\"\n required\n />\n </c8y-form-group>\n </div>\n\n <div class=\"col-md-1\">\n <c8y-form-group>\n <button\n class=\"btn btn-link hidden-xs hidden-sm\"\n type=\"button\"\n title=\"{{ 'Remove' | translate }}\"\n (click)=\"removeCustomValue(requestConfiguration.requestParams, requestParam)\"\n >\n <i\n c8yIcon=\"minus-circle\"\n class=\"text-danger\"\n ></i>\n </button>\n\n <button\n class=\"btn btn-danger btn-block btn-sm visible-xs visible-sm\"\n type=\"button\"\n title=\"{{ 'Remove' | translate }}\"\n (click)=\"removeCustomValue(requestConfiguration.requestParams, requestParam)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n <span translate>Remove</span>\n </button>\n </c8y-form-group>\n </div>\n </div>\n\n <button\n class=\"btn btn-default m-t-8\"\n type=\"button\"\n title=\"{{ 'Add request parameter' | translate }}\"\n (click)=\"addCustomValue(requestConfiguration.requestParams)\"\n >\n <i\n c8yIcon=\"plus-circle\"\n class=\"m-r-4\"\n ></i>\n <span translate>Add request parameter</span>\n </button>\n </fieldset>\n </div>\n </div>\n</fieldset>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.NgModelGroup, selector: "[ngModelGroup]", inputs: ["ngModelGroup"], exportAs: ["ngModelGroup"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: DefaultValidationDirective, selector: "[c8yDefaultValidation]", inputs: ["c8yDefaultValidation"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
|
|
1366
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: RequestConfigurationComponent, deps: [{ token: i1.ControlContainer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1367
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: RequestConfigurationComponent, isStandalone: true, selector: "c8y-request-configuration", inputs: { templateModel: "templateModel", requestName: "requestName", requestType: "requestType" }, ngImport: i0, template: "<fieldset\n class=\"p-24\"\n ngModelGroup=\"{{ requestName }}\"\n id=\"{{ requestType }}\"\n>\n <div class=\"row\">\n <div\n class=\"col-xs-12 col-sm-3 col-md-2 m-b-xs-8\"\n *ngIf=\"requestType !== 'tokenValidationRequest'\"\n >\n <div class=\"h4 text-normal text-right text-left-xs\">\n {{ requestName }}\n </div>\n </div>\n\n <div\n [ngClass]=\"\n requestType !== 'tokenValidationRequest' ? 'col-xs-12 col-sm-9 col-md-10 col-lg-9' : ''\n \"\n *ngIf=\"templateModel\"\n >\n <fieldset [ngClass]=\"requestType === 'tokenValidationRequest' ? 'c8y-fieldset p-24' : ''\">\n <legend *ngIf=\"requestType === 'tokenValidationRequest'\">\n {{ requestName }}\n </legend>\n\n <c8y-form-group>\n <label\n [for]=\"requestType + 'url'\"\n class=\"control-label\"\n translate\n >\n URL\n </label>\n <input\n type=\"url\"\n class=\"form-control\"\n name=\"url\"\n [id]=\"requestType + 'url'\"\n [(ngModel)]=\"requestConfiguration.url\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'http://www.example.com/' }\"\n c8yDefaultValidation=\"httpUrl\"\n [required]=\"requestType !== 'logoutRequest'\"\n />\n </c8y-form-group>\n\n <c8y-form-group *ngIf=\"showBody\">\n <label\n [for]=\"requestType + 'body'\"\n class=\"control-label\"\n translate\n >\n Body\n </label>\n <input\n type=\"text\"\n class=\"form-control\"\n name=\"body\"\n [id]=\"requestType + 'body'\"\n [(ngModel)]=\"requestConfiguration.body\"\n required\n />\n </c8y-form-group>\n </fieldset>\n\n <fieldset\n class=\"c8y-fieldset p-24\"\n *ngIf=\"requestType !== 'logoutRequest'\"\n >\n <legend translate>Headers</legend>\n <div\n class=\"tight-grid visible-md visible-lg\"\n *ngIf=\"requestConfiguration.headers.length > 0\"\n >\n <div class=\"col-md-6\">\n <p class=\"text-medium\">\n {{ 'Key' | translate }}\n </p>\n </div>\n <div class=\"col-md-5\">\n <p class=\"text-medium\">\n {{ 'Value' | translate }}\n </p>\n </div>\n </div>\n <div\n class=\"tight-grid\"\n data-cy=\"c8y-authentication-single-sign-on--request-header\"\n *ngFor=\"let header of requestConfiguration.headers; index as headerIndex\"\n >\n <div class=\"col-md-6\">\n <c8y-form-group>\n <label\n [for]=\"requestType + 'headerKey' + headerIndex\"\n class=\"visible-sm visible-xs\"\n translate\n >\n Key\n </label>\n <input\n class=\"form-control\"\n [name]=\"'headerKey' + headerIndex\"\n [id]=\"requestType + 'headerKey' + headerIndex\"\n [(ngModel)]=\"header.key\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'Authorization' }\"\n required\n />\n </c8y-form-group>\n </div>\n <div class=\"col-md-5\">\n <c8y-form-group>\n <label\n [for]=\"requestType + 'headerValue' + headerIndex\"\n class=\"visible-sm visible-xs\"\n translate\n >\n Value\n </label>\n <input\n class=\"form-control\"\n [name]=\"'headerValue' + headerIndex\"\n [id]=\"requestType + 'headerValue' + headerIndex\"\n [(ngModel)]=\"header.value\"\n [placeholder]=\"\n 'e.g. {{ example }}' | translate: { example: 'Basic USY7jW9jb2RlX2=' }\n \"\n required\n />\n </c8y-form-group>\n </div>\n <div class=\"col-md-1\">\n <c8y-form-group>\n <button\n class=\"btn btn-link hidden-xs hidden-sm\"\n type=\"button\"\n title=\"{{ 'Remove' | translate }}\"\n (click)=\"removeCustomValue(requestConfiguration.headers, header)\"\n >\n <i\n c8yIcon=\"minus-circle\"\n class=\"text-danger\"\n ></i>\n </button>\n <button\n class=\"btn btn-danger btn-block btn-sm visible-xs visible-sm\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n (click)=\"removeCustomValue(requestConfiguration.headers, header)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n <span translate>Remove</span>\n </button>\n </c8y-form-group>\n </div>\n </div>\n <button\n class=\"btn btn-default m-t-8\"\n type=\"button\"\n title=\"{{ 'Add header' | translate }}\"\n (click)=\"addCustomValue(requestConfiguration.headers)\"\n >\n <i\n c8yIcon=\"plus-circle\"\n class=\"m-r-4\"\n ></i>\n <span translate>Add header</span>\n </button>\n </fieldset>\n\n <fieldset class=\"c8y-fieldset p-24\">\n <legend translate>Request parameters</legend>\n <div\n class=\"tight-grid visible-md visible-lg\"\n *ngIf=\"requestConfiguration.requestParams.length > 0\"\n >\n <div class=\"col-md-6\">\n <p class=\"text-medium\">\n {{ 'Key' | translate }}\n </p>\n </div>\n <div class=\"col-md-5\">\n <p class=\"text-medium\">\n {{ 'Value' | translate }}\n </p>\n </div>\n </div>\n <div\n class=\"tight-grid\"\n data-cy=\"c8y-authentication-single-sign-on--request-parameter\"\n *ngFor=\"let requestParam of requestConfiguration.requestParams; index as paramIndex\"\n >\n <div class=\"col-md-6\">\n <c8y-form-group>\n <label\n [for]=\"requestType + 'paramKey' + paramIndex\"\n class=\"visible-sm visible-xs\"\n translate\n >\n Key\n </label>\n <input\n class=\"form-control\"\n [name]=\"'paramKey' + paramIndex\"\n [id]=\"requestType + 'paramKey' + paramIndex\"\n [(ngModel)]=\"requestParam.key\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'client_id' }\"\n required\n />\n </c8y-form-group>\n </div>\n\n <div class=\"col-md-5\">\n <c8y-form-group>\n <label\n [for]=\"requestType + 'paramValue' + paramIndex\"\n class=\"visible-sm visible-xs\"\n translate\n >\n Value\n </label>\n <input\n class=\"form-control\"\n [name]=\"'paramValue' + paramIndex\"\n [id]=\"requestType + 'paramValue' + paramIndex\"\n [(ngModel)]=\"requestParam.value\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: '${clientId}' }\"\n required\n />\n </c8y-form-group>\n </div>\n\n <div class=\"col-md-1\">\n <c8y-form-group>\n <button\n class=\"btn btn-link hidden-xs hidden-sm\"\n type=\"button\"\n title=\"{{ 'Remove' | translate }}\"\n (click)=\"removeCustomValue(requestConfiguration.requestParams, requestParam)\"\n >\n <i\n c8yIcon=\"minus-circle\"\n class=\"text-danger\"\n ></i>\n </button>\n\n <button\n class=\"btn btn-danger btn-block btn-sm visible-xs visible-sm\"\n type=\"button\"\n title=\"{{ 'Remove' | translate }}\"\n (click)=\"removeCustomValue(requestConfiguration.requestParams, requestParam)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n <span translate>Remove</span>\n </button>\n </c8y-form-group>\n </div>\n </div>\n\n <button\n class=\"btn btn-default m-t-8\"\n type=\"button\"\n title=\"{{ 'Add request parameter' | translate }}\"\n (click)=\"addCustomValue(requestConfiguration.requestParams)\"\n >\n <i\n c8yIcon=\"plus-circle\"\n class=\"m-r-4\"\n ></i>\n <span translate>Add request parameter</span>\n </button>\n </fieldset>\n </div>\n </div>\n</fieldset>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.NgModelGroup, selector: "[ngModelGroup]", inputs: ["ngModelGroup"], exportAs: ["ngModelGroup"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: DefaultValidationDirective, selector: "[c8yDefaultValidation]", inputs: ["c8yDefaultValidation"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
|
|
1368
1368
|
}
|
|
1369
1369
|
__decorate([
|
|
1370
1370
|
memoize(),
|
|
@@ -1372,7 +1372,7 @@ __decorate([
|
|
|
1372
1372
|
__metadata("design:paramtypes", [String]),
|
|
1373
1373
|
__metadata("design:returntype", void 0)
|
|
1374
1374
|
], RequestConfigurationComponent.prototype, "shouldShow", null);
|
|
1375
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1375
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: RequestConfigurationComponent, decorators: [{
|
|
1376
1376
|
type: Component,
|
|
1377
1377
|
args: [{ selector: 'c8y-request-configuration', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], imports: [
|
|
1378
1378
|
FormsModule,
|
|
@@ -1406,8 +1406,8 @@ class UserIdConfigurationComponent {
|
|
|
1406
1406
|
ngOnInit() {
|
|
1407
1407
|
this.componentId = ++UserIdConfigurationComponent.id;
|
|
1408
1408
|
}
|
|
1409
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1410
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
1409
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: UserIdConfigurationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1410
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: UserIdConfigurationComponent, isStandalone: true, selector: "c8y-user-id-configuration", inputs: { userIdConfig: "userIdConfig", withHeader: "withHeader" }, ngImport: i0, template: "<div [ngClass]=\"withHeader ? 'p-24' : 'd-contents'\">\n <div [ngClass]=\"withHeader ? 'row' : 'd-contents'\">\n <div\n class=\"col-xs-12 col-sm-3 col-md-2\"\n *ngIf=\"withHeader\"\n >\n <div\n class=\"h4 text-normal text-right text-left-xs\"\n translate\n >\n User ID\n </div>\n </div>\n <fieldset\n [ngClass]=\"withHeader ? 'col-xs-12 col-sm-9 col-md-10 col-lg-9' : 'c8y-fieldset p-24'\"\n >\n <legend *ngIf=\"!withHeader\">\n {{ 'User/App ID' | translate }}\n </legend>\n\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group *ngIf=\"userIdConfig.useConstantValue\">\n <label\n class=\"control-label\"\n [for]=\"'constantValue' + componentId\"\n translate\n >\n Constant value\n </label>\n <input\n class=\"form-control\"\n type=\"text\"\n required\n [id]=\"'constantValue' + componentId\"\n [name]=\"'constantValue' + componentId\"\n [(ngModel)]=\"userIdConfig.constantValue\"\n />\n </c8y-form-group>\n <c8y-form-group *ngIf=\"!userIdConfig.useConstantValue\">\n <label\n class=\"control-label\"\n [for]=\"'jwtField' + componentId\"\n translate\n >\n JWT field\n </label>\n <input\n class=\"form-control\"\n type=\"text\"\n required\n [id]=\"'jwtField' + componentId\"\n [name]=\"'jwtField' + componentId\"\n [(ngModel)]=\"userIdConfig.jwtField\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'upn' }\"\n />\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <div\n class=\"form-group\"\n *ngIf=\"shouldShow('useConstantValue')\"\n >\n <div\n class=\"form-group\"\n *ngIf=\"shouldShow('useConstantValue')\"\n >\n <label\n class=\"c8y-switch m-t-24\"\n data-cy=\"c8y-authentication--external-token-configuration-constant-value-switcher\"\n title=\"{{ 'Use constant value' | translate }}\"\n [for]=\"'useConstantValue' + componentId\"\n >\n <input\n type=\"checkbox\"\n [name]=\"'useConstantValue' + componentId\"\n [id]=\"'useConstantValue' + componentId\"\n [(ngModel)]=\"userIdConfig.useConstantValue\"\n />\n <span></span>\n <span class=\"control-label\">{{ 'Use constant value' | translate }}</span>\n </label>\n </div>\n </div>\n </div>\n </div>\n </fieldset>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
|
|
1411
1411
|
}
|
|
1412
1412
|
__decorate([
|
|
1413
1413
|
memoize(),
|
|
@@ -1415,7 +1415,7 @@ __decorate([
|
|
|
1415
1415
|
__metadata("design:paramtypes", [String]),
|
|
1416
1416
|
__metadata("design:returntype", void 0)
|
|
1417
1417
|
], UserIdConfigurationComponent.prototype, "shouldShow", null);
|
|
1418
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1418
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: UserIdConfigurationComponent, decorators: [{
|
|
1419
1419
|
type: Component,
|
|
1420
1420
|
args: [{ selector: 'c8y-user-id-configuration', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], imports: [
|
|
1421
1421
|
NgClass,
|
|
@@ -1443,10 +1443,10 @@ class ExternalTokenConfigComponent {
|
|
|
1443
1443
|
this.externalTokenConfig.validationMethod = event;
|
|
1444
1444
|
this.externalTokenConfig.tokenValidationRequest = new RequestConfiguration(this.validationMethods[event].defaults);
|
|
1445
1445
|
}
|
|
1446
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1447
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
1446
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ExternalTokenConfigComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1447
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: ExternalTokenConfigComponent, isStandalone: true, selector: "c8y-external-token-config", inputs: { templateModel: "templateModel" }, ngImport: i0, template: "<div class=\"p-24\">\n <div class=\"row\">\n <div class=\"col-xs-12 col-sm-3 col-md-2\">\n <div\n class=\"h4 text-normal text-right text-left-xs\"\n translate\n >\n External token configuration\n </div>\n </div>\n\n <div\n class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9\"\n *ngIf=\"templateModel\"\n >\n <label\n class=\"c8y-switch\"\n data-cy=\"c8y-authentication--external-token-configuration-switcher\"\n title=\"{{ 'Allow authentication with access token from external IAM system' | translate }}\"\n >\n <input\n id=\"enabled\"\n name=\"enabled\"\n type=\"checkbox\"\n [(ngModel)]=\"externalTokenConfig.enabled\"\n />\n <span></span>\n <span class=\"control-label\">\n {{ 'Allow authentication with access token from external IAM system' | translate }}\n </span>\n </label>\n\n <div\n class=\"collapse\"\n [collapse]=\"!externalTokenConfig.enabled\"\n [isAnimated]=\"true\"\n >\n <ng-container *ngIf=\"externalTokenConfig.enabled\">\n <c8y-user-id-configuration\n [userIdConfig]=\"externalTokenConfig.userOrAppIdConfig\"\n [withHeader]=\"false\"\n ></c8y-user-id-configuration>\n\n <label\n class=\"c8y-switch\"\n title=\"{{ 'Validate access token' | translate }}\"\n for=\"validationRequired\"\n >\n <input\n id=\"validationRequired\"\n name=\"validationRequired\"\n type=\"checkbox\"\n [(ngModel)]=\"externalTokenConfig.validationRequired\"\n />\n <span></span>\n <span class=\"control-label\">{{ 'Validate access token' | translate }}</span>\n </label>\n <div\n class=\"collapse\"\n [collapse]=\"!externalTokenConfig.validationRequired\"\n [isAnimated]=\"true\"\n >\n <ng-container *ngIf=\"externalTokenConfig.validationRequired\">\n <div class=\"row\">\n <div class=\"col-sm-6 m-t-16\">\n <label\n class=\"control-label\"\n for=\"validationMethod\"\n translate\n >\n Validation method\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"validationMethod\"\n name=\"validationMethod\"\n [ngModel]=\"externalTokenConfig.validationMethod\"\n (ngModelChange)=\"onValidationMethodChange($event)\"\n >\n <option\n *ngFor=\"let validationMethod of validationMethods | keyvalue\"\n [ngValue]=\"validationMethod.key\"\n >\n {{ validationMethod.value.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <c8y-request-configuration\n [templateModel]=\"externalTokenConfig\"\n [requestName]=\"'Token validation request' | translate\"\n [requestType]=\"'tokenValidationRequest'\"\n ></c8y-request-configuration>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-6 m-l-8\">\n <c8y-form-group>\n <label\n class=\"control-label\"\n for=\"accessTokenValidityCheckIntervalInMinutes\"\n translate\n >\n Access token validation frequency\n </label>\n <div class=\"input-group\">\n <input\n class=\"form-control\"\n id=\"accessTokenValidityCheckIntervalInMinutes\"\n name=\"accessTokenValidityCheckIntervalInMinutes\"\n type=\"number\"\n required\n [(ngModel)]=\"externalTokenConfig.accessTokenValidityCheckIntervalInMinutes\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: '1' }\"\n step=\"1\"\n [min]=\"1\"\n />\n <span\n class=\"input-group-addon\"\n translate\n >\n minutes\n </span>\n </div>\n </c8y-form-group>\n </div>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "component", type: UserIdConfigurationComponent, selector: "c8y-user-id-configuration", inputs: ["userIdConfig", "withHeader"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: RequestConfigurationComponent, selector: "c8y-request-configuration", inputs: ["templateModel", "requestName", "requestType"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: MinValidationDirective, selector: "[min]", inputs: ["min"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: KeyValuePipe, name: "keyvalue" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
|
|
1448
1448
|
}
|
|
1449
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1449
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ExternalTokenConfigComponent, decorators: [{
|
|
1450
1450
|
type: Component,
|
|
1451
1451
|
args: [{ selector: 'c8y-external-token-config', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], imports: [
|
|
1452
1452
|
C8yTranslateDirective,
|
|
@@ -1486,8 +1486,8 @@ class BasicConfigurationComponent {
|
|
|
1486
1486
|
this.redirectToPlatform = this.templateModel.redirectToPlatform || '';
|
|
1487
1487
|
this.flowControlledByUI = !this.templateModel.redirectToPlatform;
|
|
1488
1488
|
}
|
|
1489
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1490
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: BasicConfigurationComponent, isStandalone: true, selector: "c8y-basic-configuration", inputs: { templateModel: "templateModel" }, usesOnChanges: true, ngImport: i0, template: "<fieldset class=\"p-24\">\n <div class=\"row\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 m-b-xs-8\">\n <div\n class=\"h4 text-normal text-right text-left-xs\"\n translate\n >\n Basic\n </div>\n </div>\n\n <div\n class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9\"\n *ngIf=\"templateModel\"\n >\n <div class=\"row\">\n <div\n class=\"col-sm-6\"\n *ngIf=\"shouldShow('keyCloakAddress')\"\n >\n <c8y-form-group>\n <label\n class=\"control-label\"\n for=\"keyCloakAddress\"\n translate\n >\n Keycloak address\n </label>\n <input\n class=\"form-control\"\n id=\"keyCloakAddress\"\n name=\"keyCloakAddress\"\n type=\"url\"\n required\n [(ngModel)]=\"templateModel.keyCloakAddress\"\n [placeholder]=\"'e.g. {{ example }}' | translate : { example: 'https://example.de' }\"\n />\n </c8y-form-group>\n </div>\n <div\n class=\"col-sm-6\"\n *ngIf=\"shouldShow('aadAddress')\"\n >\n <c8y-form-group>\n <label\n class=\"control-label\"\n for=\"aadAddress\"\n translate\n >\n Azure AD address\n </label>\n <input\n class=\"form-control\"\n id=\"aadAddress\"\n name=\"aadAddress\"\n type=\"url\"\n required\n [(ngModel)]=\"templateModel.aadAddress\"\n [placeholder]=\"\n 'e.g. {{ example }}' | translate : { example: 'https://login.microsoftonline.de' }\n \"\n />\n </c8y-form-group>\n </div>\n <div\n class=\"col-sm-6\"\n *ngIf=\"shouldShow('tenant')\"\n >\n <c8y-form-group>\n <label\n class=\"control-label\"\n for=\"tenant\"\n translate\n >\n Tenant\n </label>\n <input\n class=\"form-control\"\n id=\"tenant\"\n name=\"tenant\"\n required\n [(ngModel)]=\"templateModel.tenant\"\n [placeholder]=\"'e.g. {{ example }}' | translate : { example: 'c8y.onmicrosoft.de' }\"\n />\n </c8y-form-group>\n </div>\n <div\n class=\"col-sm-6\"\n *ngIf=\"shouldShow('applicationId')\"\n >\n <c8y-form-group>\n <label\n class=\"control-label\"\n for=\"applicationId\"\n translate\n >\n Application ID\n </label>\n <input\n class=\"form-control\"\n id=\"applicationId\"\n name=\"applicationId\"\n required\n [(ngModel)]=\"templateModel.applicationId\"\n />\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-sm-6\"\n *ngIf=\"shouldShow('realmName')\"\n >\n <c8y-form-group>\n <label\n class=\"control-label\"\n for=\"realmName\"\n translate\n >\n Realm name\n </label>\n <input\n class=\"form-control\"\n id=\"realmName\"\n name=\"realmName\"\n required\n [(ngModel)]=\"templateModel.realmName\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\" *ngIf=\"shouldShow('redirectToPlatform')\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label\n class=\"control-label\"\n for=\"redirectToPlatform\"\n >\n {{ 'Redirect URL' | translate }}\n <button\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"helpContent\"\n placement=\"bottom\"\n triggers=\"focus\"\n type=\"button\"\n [adaptivePosition]=\"false\"\n *ngIf=\"\n !flowControlledByUI &&\n redirectToPlatformWarningParams &&\n templateModel.redirectToPlatform !=\n redirectToPlatformWarningParams.defaultRedirectUrl\n \"\n ></button>\n <ng-template #helpContent>\n <span\n ngNonBindable\n translate\n [translateParams]=\"redirectToPlatformWarningParams\"\n >\n For correct application behavior you can use only \"{{ host }}\" or \"{{\n defaultRedirectUrl\n }}\", the latter one is recommended.\n </span>\n </ng-template>\n </label>\n <input\n class=\"form-control\"\n id=\"redirectToPlatform\"\n name=\"redirectToPlatform\"\n type=\"url\"\n [required]=\"!flowControlledByUI\"\n [disabled]=\"flowControlledByUI\"\n [(ngModel)]=\"templateModel.redirectToPlatform\"\n [placeholder]=\"\n 'e.g. {{ example }}'\n | translate\n : {\n example:\n redirectToPlatformWarningParams?.defaultRedirectUrl ||\n 'https://tenant.domain.com'\n }\n \"\n />\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <div\n class=\"form-group\"\n >\n <label\n class=\"c8y-switch m-t-24\"\n title=\"{{ 'Redirect to the user interface application`SSO authentication`' | translate }}\"\n for=\"flowControlledByUI\"\n >\n <input\n type=\"checkbox\"\n name=\"flowControlledByUI\"\n id=\"flowControlledByUI\"\n [(ngModel)]=\"flowControlledByUI\"\n (change)=\"templateModel.redirectToPlatform = flowControlledByUI ? '' : redirectToPlatform\"\n />\n <span></span>\n <span class=\"control-label\">{{ 'Redirect to the user interface application`SSO authentication`' | translate }}</span>\n <button\n type=\"button\"\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ REDIRECT_TO_THE_USER_INTERFACE_APPLICATION_TOOLTIP | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </label>\n </div>\n </div>\n <div class=\"col-sm-12\">\n <div *ngIf=\"flowControlledByUI && redirectToPlatform != ''\">\n <div class=\"alert alert-warning max-width-100 m-b-32\"\n ngNonBindable\n translate\n [translateParams]=\"{\n redirectURI: '<tenant_domain>/apps/*'\n }\">\n Make sure that \"Valid Redirect URIs\" in the authorization server is set to \"{{ redirectURI }}\" or to the full URIs of the used applications if the authorization server does not support patterns.\n </div>\n </div>\n <div *ngIf=\"!flowControlledByUI && redirectToPlatform === ''\">\n <div class=\"alert alert-warning max-width-100 m-b-32\"\n ngNonBindable\n translate\n [translateParams]=\"{\n redirectURI: '<tenant_domain>/tenant/oauth'\n }\">\n Make sure that \"Valid Redirect URIs\" in the authorization server is set to \"{{ redirectURI }}\".\n </div>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div\n class=\"col-sm-6\"\n *ngIf=\"shouldShow('clientSecret')\"\n >\n <c8y-form-group>\n <label\n class=\"control-label\"\n for=\"clientSecret\"\n translate\n >\n Client secret\n </label>\n <input\n class=\"form-control\"\n id=\"clientSecret\"\n name=\"clientSecret\"\n required\n [(ngModel)]=\"templateModel.clientSecret\"\n />\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-sm-6\"\n *ngIf=\"shouldShow('clientId')\"\n >\n <c8y-form-group>\n <label\n class=\"control-label\"\n for=\"clientId\"\n translate\n >\n Client ID\n </label>\n <input\n class=\"form-control\"\n id=\"clientId\"\n name=\"clientId\"\n required\n [(ngModel)]=\"templateModel.clientId\"\n [placeholder]=\"\n 'e.g. {{ example }}' | translate : { example: '254234981c-78a8-4588\u2026' }\n \"\n />\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-sm-6\"\n *ngIf=\"shouldShow('issuer')\"\n >\n <c8y-form-group>\n <label\n class=\"control-label\"\n for=\"issuer\"\n translate\n >\n Token issuer\n </label>\n <input\n class=\"form-control\"\n id=\"issuer\"\n name=\"issuer\"\n required\n [(ngModel)]=\"templateModel.issuer\"\n [placeholder]=\"\n 'e.g. {{ example }}'\n | translate : { example: 'https://login.microsoftonline.de/237652-3727' }\n \"\n />\n </c8y-form-group>\n </div>\n <div\n class=\"col-sm-6\"\n *ngIf=\"shouldShow('scopeId')\"\n >\n <c8y-form-group>\n <label\n class=\"control-label\"\n for=\"scopeId\"\n translate\n >\n Scope ID\n </label>\n <input\n class=\"form-control\"\n id=\"scopeId\"\n name=\"scopeId\"\n [(ngModel)]=\"templateModel.scopeId\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: '237652-3727' }\"\n />\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-sm-6\"\n *ngIf=\"shouldShow('buttonName')\"\n >\n <c8y-form-group>\n <label\n class=\"control-label\"\n for=\"buttonName\"\n translate\n >\n Button name\n </label>\n <input\n class=\"form-control\"\n id=\"buttonName\"\n name=\"buttonName\"\n required\n [(ngModel)]=\"templateModel.buttonName\"\n [placeholder]=\"'e.g. Log in with Azure AD' | translate\"\n />\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-sm-6\"\n *ngIf=\"shouldShow('providerName')\"\n >\n <c8y-form-group>\n <label\n class=\"control-label\"\n for=\"providerName\"\n translate\n >\n Provider name\n </label>\n <input\n class=\"form-control\"\n id=\"providerName\"\n name=\"providerName\"\n required\n [(ngModel)]=\"templateModel.providerName\"\n [placeholder]=\"'e.g. {{ example }}' | translate : { example: 'Azure AD' }\"\n />\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-sm-6\"\n *ngIf=\"shouldShow('audience')\"\n >\n <c8y-form-group>\n <label\n class=\"control-label\"\n for=\"audience\"\n translate\n >\n Audience\n </label>\n <input\n class=\"form-control\"\n id=\"audience\"\n name=\"audience\"\n required\n [(ngModel)]=\"templateModel.audience\"\n [placeholder]=\"\n 'e.g. {{ example }}' | translate : { example: 'https://test.example.com' }\n \"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div\n class=\"row\"\n *ngIf=\"shouldShow('visibleOnLoginPage')\"\n >\n <div class=\"col-sm-6\">\n <label\n class=\"c8y-switch\"\n title=\"{{ 'Visible on login page' | translate }}\"\n for=\"visibleOnLoginPage\"\n >\n <input\n id=\"visibleOnLoginPage\"\n name=\"visibleOnLoginPage\"\n type=\"checkbox\"\n [(ngModel)]=\"templateModel.visibleOnLoginPage\"\n />\n <span></span>\n <span class=\"control-label\">{{ 'Visible on login page' | translate }}</span>\n </label>\n </div>\n </div>\n </div>\n </div>\n</fieldset>\n", dependencies: [{ kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
|
|
1489
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BasicConfigurationComponent, deps: [{ token: i1$1.TenantService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1490
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: BasicConfigurationComponent, isStandalone: true, selector: "c8y-basic-configuration", inputs: { templateModel: "templateModel" }, usesOnChanges: true, ngImport: i0, template: "<fieldset class=\"p-24\">\n <div class=\"row\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 m-b-xs-8\">\n <div\n class=\"h4 text-normal text-right text-left-xs\"\n translate\n >\n Basic\n </div>\n </div>\n\n <div\n class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9\"\n *ngIf=\"templateModel\"\n >\n <div class=\"row\">\n <div\n class=\"col-sm-6\"\n *ngIf=\"shouldShow('keyCloakAddress')\"\n >\n <c8y-form-group>\n <label\n class=\"control-label\"\n for=\"keyCloakAddress\"\n translate\n >\n Keycloak address\n </label>\n <input\n class=\"form-control\"\n id=\"keyCloakAddress\"\n name=\"keyCloakAddress\"\n type=\"url\"\n required\n [(ngModel)]=\"templateModel.keyCloakAddress\"\n [placeholder]=\"'e.g. {{ example }}' | translate : { example: 'https://example.de' }\"\n />\n </c8y-form-group>\n </div>\n <div\n class=\"col-sm-6\"\n *ngIf=\"shouldShow('aadAddress')\"\n >\n <c8y-form-group>\n <label\n class=\"control-label\"\n for=\"aadAddress\"\n translate\n >\n Azure AD address\n </label>\n <input\n class=\"form-control\"\n id=\"aadAddress\"\n name=\"aadAddress\"\n type=\"url\"\n required\n [(ngModel)]=\"templateModel.aadAddress\"\n [placeholder]=\"\n 'e.g. {{ example }}' | translate : { example: 'https://login.microsoftonline.de' }\n \"\n />\n </c8y-form-group>\n </div>\n <div\n class=\"col-sm-6\"\n *ngIf=\"shouldShow('tenant')\"\n >\n <c8y-form-group>\n <label\n class=\"control-label\"\n for=\"tenant\"\n translate\n >\n Tenant\n </label>\n <input\n class=\"form-control\"\n id=\"tenant\"\n name=\"tenant\"\n required\n [(ngModel)]=\"templateModel.tenant\"\n [placeholder]=\"'e.g. {{ example }}' | translate : { example: 'c8y.onmicrosoft.de' }\"\n />\n </c8y-form-group>\n </div>\n <div\n class=\"col-sm-6\"\n *ngIf=\"shouldShow('applicationId')\"\n >\n <c8y-form-group>\n <label\n class=\"control-label\"\n for=\"applicationId\"\n translate\n >\n Application ID\n </label>\n <input\n class=\"form-control\"\n id=\"applicationId\"\n name=\"applicationId\"\n required\n [(ngModel)]=\"templateModel.applicationId\"\n />\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-sm-6\"\n *ngIf=\"shouldShow('realmName')\"\n >\n <c8y-form-group>\n <label\n class=\"control-label\"\n for=\"realmName\"\n translate\n >\n Realm name\n </label>\n <input\n class=\"form-control\"\n id=\"realmName\"\n name=\"realmName\"\n required\n [(ngModel)]=\"templateModel.realmName\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\" *ngIf=\"shouldShow('redirectToPlatform')\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label\n class=\"control-label\"\n for=\"redirectToPlatform\"\n >\n {{ 'Redirect URL' | translate }}\n <button\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"helpContent\"\n placement=\"bottom\"\n triggers=\"focus\"\n type=\"button\"\n [adaptivePosition]=\"false\"\n *ngIf=\"\n !flowControlledByUI &&\n redirectToPlatformWarningParams &&\n templateModel.redirectToPlatform !=\n redirectToPlatformWarningParams.defaultRedirectUrl\n \"\n ></button>\n <ng-template #helpContent>\n <span\n ngNonBindable\n translate\n [translateParams]=\"redirectToPlatformWarningParams\"\n >\n For correct application behavior you can use only \"{{ host }}\" or \"{{\n defaultRedirectUrl\n }}\", the latter one is recommended.\n </span>\n </ng-template>\n </label>\n <input\n class=\"form-control\"\n id=\"redirectToPlatform\"\n name=\"redirectToPlatform\"\n type=\"url\"\n [required]=\"!flowControlledByUI\"\n [disabled]=\"flowControlledByUI\"\n [(ngModel)]=\"templateModel.redirectToPlatform\"\n [placeholder]=\"\n 'e.g. {{ example }}'\n | translate\n : {\n example:\n redirectToPlatformWarningParams?.defaultRedirectUrl ||\n 'https://tenant.domain.com'\n }\n \"\n />\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <div\n class=\"form-group\"\n >\n <label\n class=\"c8y-switch m-t-24\"\n title=\"{{ 'Redirect to the user interface application`SSO authentication`' | translate }}\"\n for=\"flowControlledByUI\"\n >\n <input\n type=\"checkbox\"\n name=\"flowControlledByUI\"\n id=\"flowControlledByUI\"\n [(ngModel)]=\"flowControlledByUI\"\n (change)=\"templateModel.redirectToPlatform = flowControlledByUI ? '' : redirectToPlatform\"\n />\n <span></span>\n <span class=\"control-label\">{{ 'Redirect to the user interface application`SSO authentication`' | translate }}</span>\n <button\n type=\"button\"\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ REDIRECT_TO_THE_USER_INTERFACE_APPLICATION_TOOLTIP | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </label>\n </div>\n </div>\n <div class=\"col-sm-12\">\n <div *ngIf=\"flowControlledByUI && redirectToPlatform != ''\">\n <div class=\"alert alert-warning max-width-100 m-b-32\"\n ngNonBindable\n translate\n [translateParams]=\"{\n redirectURI: '<tenant_domain>/apps/*'\n }\">\n Make sure that \"Valid Redirect URIs\" in the authorization server is set to \"{{ redirectURI }}\" or to the full URIs of the used applications if the authorization server does not support patterns.\n </div>\n </div>\n <div *ngIf=\"!flowControlledByUI && redirectToPlatform === ''\">\n <div class=\"alert alert-warning max-width-100 m-b-32\"\n ngNonBindable\n translate\n [translateParams]=\"{\n redirectURI: '<tenant_domain>/tenant/oauth'\n }\">\n Make sure that \"Valid Redirect URIs\" in the authorization server is set to \"{{ redirectURI }}\".\n </div>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div\n class=\"col-sm-6\"\n *ngIf=\"shouldShow('clientSecret')\"\n >\n <c8y-form-group>\n <label\n class=\"control-label\"\n for=\"clientSecret\"\n translate\n >\n Client secret\n </label>\n <input\n class=\"form-control\"\n id=\"clientSecret\"\n name=\"clientSecret\"\n required\n [(ngModel)]=\"templateModel.clientSecret\"\n />\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-sm-6\"\n *ngIf=\"shouldShow('clientId')\"\n >\n <c8y-form-group>\n <label\n class=\"control-label\"\n for=\"clientId\"\n translate\n >\n Client ID\n </label>\n <input\n class=\"form-control\"\n id=\"clientId\"\n name=\"clientId\"\n required\n [(ngModel)]=\"templateModel.clientId\"\n [placeholder]=\"\n 'e.g. {{ example }}' | translate : { example: '254234981c-78a8-4588\u2026' }\n \"\n />\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-sm-6\"\n *ngIf=\"shouldShow('issuer')\"\n >\n <c8y-form-group>\n <label\n class=\"control-label\"\n for=\"issuer\"\n translate\n >\n Token issuer\n </label>\n <input\n class=\"form-control\"\n id=\"issuer\"\n name=\"issuer\"\n required\n [(ngModel)]=\"templateModel.issuer\"\n [placeholder]=\"\n 'e.g. {{ example }}'\n | translate : { example: 'https://login.microsoftonline.de/237652-3727' }\n \"\n />\n </c8y-form-group>\n </div>\n <div\n class=\"col-sm-6\"\n *ngIf=\"shouldShow('scopeId')\"\n >\n <c8y-form-group>\n <label\n class=\"control-label\"\n for=\"scopeId\"\n translate\n >\n Scope ID\n </label>\n <input\n class=\"form-control\"\n id=\"scopeId\"\n name=\"scopeId\"\n [(ngModel)]=\"templateModel.scopeId\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: '237652-3727' }\"\n />\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-sm-6\"\n *ngIf=\"shouldShow('buttonName')\"\n >\n <c8y-form-group>\n <label\n class=\"control-label\"\n for=\"buttonName\"\n translate\n >\n Button name\n </label>\n <input\n class=\"form-control\"\n id=\"buttonName\"\n name=\"buttonName\"\n required\n [(ngModel)]=\"templateModel.buttonName\"\n [placeholder]=\"'e.g. Log in with Azure AD' | translate\"\n />\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-sm-6\"\n *ngIf=\"shouldShow('providerName')\"\n >\n <c8y-form-group>\n <label\n class=\"control-label\"\n for=\"providerName\"\n translate\n >\n Provider name\n </label>\n <input\n class=\"form-control\"\n id=\"providerName\"\n name=\"providerName\"\n required\n [(ngModel)]=\"templateModel.providerName\"\n [placeholder]=\"'e.g. {{ example }}' | translate : { example: 'Azure AD' }\"\n />\n </c8y-form-group>\n </div>\n\n <div\n class=\"col-sm-6\"\n *ngIf=\"shouldShow('audience')\"\n >\n <c8y-form-group>\n <label\n class=\"control-label\"\n for=\"audience\"\n translate\n >\n Audience\n </label>\n <input\n class=\"form-control\"\n id=\"audience\"\n name=\"audience\"\n required\n [(ngModel)]=\"templateModel.audience\"\n [placeholder]=\"\n 'e.g. {{ example }}' | translate : { example: 'https://test.example.com' }\n \"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div\n class=\"row\"\n *ngIf=\"shouldShow('visibleOnLoginPage')\"\n >\n <div class=\"col-sm-6\">\n <label\n class=\"c8y-switch\"\n title=\"{{ 'Visible on login page' | translate }}\"\n for=\"visibleOnLoginPage\"\n >\n <input\n id=\"visibleOnLoginPage\"\n name=\"visibleOnLoginPage\"\n type=\"checkbox\"\n [(ngModel)]=\"templateModel.visibleOnLoginPage\"\n />\n <span></span>\n <span class=\"control-label\">{{ 'Visible on login page' | translate }}</span>\n </label>\n </div>\n </div>\n </div>\n </div>\n</fieldset>\n", dependencies: [{ kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
|
|
1491
1491
|
}
|
|
1492
1492
|
__decorate([
|
|
1493
1493
|
memoize(),
|
|
@@ -1495,7 +1495,7 @@ __decorate([
|
|
|
1495
1495
|
__metadata("design:paramtypes", [String]),
|
|
1496
1496
|
__metadata("design:returntype", void 0)
|
|
1497
1497
|
], BasicConfigurationComponent.prototype, "shouldShow", null);
|
|
1498
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1498
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BasicConfigurationComponent, decorators: [{
|
|
1499
1499
|
type: Component,
|
|
1500
1500
|
args: [{ selector: 'c8y-basic-configuration', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], imports: [
|
|
1501
1501
|
C8yTranslateDirective,
|
|
@@ -1565,10 +1565,10 @@ class PaginatedListGroupComponent {
|
|
|
1565
1565
|
setTimeout(() => this.renderer.removeClass(lastItem, 'highlighted'), 2000);
|
|
1566
1566
|
}
|
|
1567
1567
|
}
|
|
1568
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1569
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
1568
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PaginatedListGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1569
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: PaginatedListGroupComponent, isStandalone: true, selector: "c8y-paginated-list-group", inputs: { items: "items", itemsPerPage: "itemsPerPage" }, queries: [{ propertyName: "itemTemplate", first: true, predicate: TemplateRef, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"container-fluid\"\n *ngIf=\"items.length > 0\"\n>\n <c8y-list-group>\n <c8y-li *ngFor=\"let item of currentPageItems; let i = index\">\n <ng-container\n *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item, index: getItemIndex(item) }\"\n ></ng-container>\n </c8y-li>\n <c8y-li class=\"sticky-bottom\">\n <pagination\n [totalItems]=\"items.length\"\n [(ngModel)]=\"currentPage\"\n [ngModelOptions]=\"{ standalone: true }\"\n [itemsPerPage]=\"itemsPerPage\"\n (pageChanged)=\"pageChanged($event)\"\n [maxSize]=\"10\"\n [boundaryLinks]=\"true\"\n previousText=\" \"\n nextText=\" \"\n firstText=\"«\"\n lastText=\"»\"\n ></pagination>\n </c8y-li>\n </c8y-list-group>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i2.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "ngmodule", type: PaginationModule }, { kind: "component", type: i4.PaginationComponent, selector: "pagination", inputs: ["align", "maxSize", "boundaryLinks", "directionLinks", "firstText", "previousText", "nextText", "lastText", "rotate", "pageBtnClass", "disabled", "customPageTemplate", "customNextTemplate", "customPreviousTemplate", "customFirstTemplate", "customLastTemplate", "itemsPerPage", "totalItems"], outputs: ["numPages", "pageChanged"] }] }); }
|
|
1570
1570
|
}
|
|
1571
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1571
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PaginatedListGroupComponent, decorators: [{
|
|
1572
1572
|
type: Component,
|
|
1573
1573
|
args: [{ selector: 'c8y-paginated-list-group', standalone: true, imports: [CoreModule, PaginationModule], template: "<div\n class=\"container-fluid\"\n *ngIf=\"items.length > 0\"\n>\n <c8y-list-group>\n <c8y-li *ngFor=\"let item of currentPageItems; let i = index\">\n <ng-container\n *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item, index: getItemIndex(item) }\"\n ></ng-container>\n </c8y-li>\n <c8y-li class=\"sticky-bottom\">\n <pagination\n [totalItems]=\"items.length\"\n [(ngModel)]=\"currentPage\"\n [ngModelOptions]=\"{ standalone: true }\"\n [itemsPerPage]=\"itemsPerPage\"\n (pageChanged)=\"pageChanged($event)\"\n [maxSize]=\"10\"\n [boundaryLinks]=\"true\"\n previousText=\" \"\n nextText=\" \"\n firstText=\"«\"\n lastText=\"»\"\n ></pagination>\n </c8y-li>\n </c8y-list-group>\n</div>\n" }]
|
|
1574
1574
|
}], propDecorators: { items: [{
|
|
@@ -1645,10 +1645,10 @@ class ChildPredicatesComponent {
|
|
|
1645
1645
|
value: ''
|
|
1646
1646
|
});
|
|
1647
1647
|
}
|
|
1648
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1649
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
1648
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ChildPredicatesComponent, deps: [{ token: i1.ControlContainer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1649
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: ChildPredicatesComponent, isStandalone: true, selector: "c8y-sso-child-predicates", inputs: { childPredicates: "childPredicates", accessMappingIndex: "accessMappingIndex" }, outputs: { onRemoveAllChildPredicates: "onRemoveAllChildPredicates" }, ngImport: i0, template: "<fieldset class=\"c8y-fieldset p-16\">\n <legend>{{ 'When' | translate }}</legend>\n <div class=\"tight-grid hidden-sm hidden-xs\">\n <div class=\"col-md-4\">\n <label translate>Key</label>\n </div>\n <div class=\"col-md-2\">\n <label translate>Operator`logical`</label>\n </div>\n <div class=\"col-md-4\">\n <label translate>Value</label>\n </div>\n </div>\n <div\n class=\"tight-grid\"\n *ngFor=\"let childPredicate of childPredicates; last as isLast; index as idx\"\n >\n <div class=\"col-md-4\">\n <c8y-form-group>\n <label\n [for]=\"'parameterPath' + accessMappingIndex + idx\"\n class=\"visible-sm visible-xs\"\n translate\n >\n Key\n </label>\n <input\n [name]=\"'parameterPath' + accessMappingIndex + idx\"\n [id]=\"'parameterPath' + accessMappingIndex + idx\"\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"childPredicate.parameterPath\"\n placeholder=\"{{ 'Key' | translate }}\"\n required\n />\n </c8y-form-group>\n </div>\n <div class=\"col-md-2\">\n <c8y-form-group>\n <label\n [for]=\"'operator' + accessMappingIndex + idx\"\n class=\"visible-sm visible-xs\"\n translate\n >\n Operator`logical`\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n [name]=\"'operator' + accessMappingIndex + idx\"\n [id]=\"'operator' + accessMappingIndex + idx\"\n [(ngModel)]=\"childPredicate.operator\"\n required\n >\n <option\n *ngFor=\"let relation of relations\"\n [ngValue]=\"relation.value\"\n >\n {{ relation.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-md-4\">\n <c8y-form-group>\n <label\n [for]=\"'value' + accessMappingIndex + idx\"\n class=\"visible-sm visible-xs\"\n translate\n >\n Value\n </label>\n <input\n [id]=\"'value' + accessMappingIndex + idx\"\n [name]=\"'value' + accessMappingIndex + idx\"\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"childPredicate.value\"\n placeholder=\"{{ 'Value' | translate }}\"\n required\n />\n </c8y-form-group>\n </div>\n <div class=\"col-md-1\">\n <c8y-form-group>\n <button\n class=\"btn btn-dot btn-dot--danger hidden-xs hidden-sm\"\n name=\"removeButton\"\n (click)=\"removeChildPredicate(childPredicate)\"\n tooltip=\"{{ 'Remove' | translate }}\"\n [attr.aria-label]=\"'Remove' | translate\"\n [delay]=\"300\"\n type=\"button\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n <button\n name=\"removeButton\"\n class=\"btn btn-danger btn-block btn-sm visible-xs visible-sm\"\n (click)=\"removeChildPredicate(childPredicate)\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n <span translate>Remove</span>\n </button>\n </c8y-form-group>\n </div>\n <div class=\"col-md-1\">\n <c8y-form-group *ngIf=\"isLast\">\n <button\n title=\"{{ 'and' | translate }}\"\n class=\"btn btn-default btn-block btn-sm\"\n (click)=\"addChildPredicate()\"\n type=\"button\"\n translate\n >\n and\n </button>\n </c8y-form-group>\n </div>\n </div>\n</fieldset>\n", dependencies: [{ kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
|
|
1650
1650
|
}
|
|
1651
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1651
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ChildPredicatesComponent, decorators: [{
|
|
1652
1652
|
type: Component,
|
|
1653
1653
|
args: [{ selector: 'c8y-sso-child-predicates', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], imports: [
|
|
1654
1654
|
C8yTranslateDirective,
|
|
@@ -1695,10 +1695,10 @@ class DynamicAccessMappingComponent {
|
|
|
1695
1695
|
}
|
|
1696
1696
|
}
|
|
1697
1697
|
}
|
|
1698
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1699
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
1698
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DynamicAccessMappingComponent, deps: [{ token: i1.ControlContainer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1699
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: DynamicAccessMappingComponent, isStandalone: true, selector: "c8y-sso-dynamic-access-mapping", inputs: { groups: "groups", apps: "apps", accessMapping: "accessMapping", accessMappingIndex: "accessMappingIndex" }, outputs: { onRemoveAccessMapping: "onRemoveAccessMapping" }, usesOnChanges: true, ngImport: i0, template: "<fieldset class=\"c8y-fieldset p-8\">\n <div *ngIf=\"accessMapping.when.childPredicates.length != 0\">\n <c8y-sso-child-predicates\n [childPredicates]=\"accessMapping.when.childPredicates\"\n [accessMappingIndex]=\"'am' + accessMappingIndex\"\n (onRemoveAllChildPredicates)=\"onRemoveAllChildPredicates()\"\n ></c8y-sso-child-predicates>\n\n <fieldset class=\"c8y-fieldset p-16\">\n <legend>\n {{ 'Provide access to' | translate }}\n </legend>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <div\n class=\"form-group\"\n title=\"{{ 'Default global roles' | translate }}\"\n >\n <label\n class=\"control-label\"\n [for]=\"'groups' + accessMappingIndex\"\n >\n {{ 'Default global roles' | translate }}\n </label>\n <c8y-select-legacy\n [id]=\"'groups' + accessMappingIndex\"\n [items]=\"groups\"\n [selected]=\"selectedGroups\"\n [disableApplyOnNoSelection]=\"true\"\n (onChange)=\"\n controlContainer.control.markAsDirty();\n selectedGroups = $event;\n accessMapping.thenGroups = getIds($event)\n \"\n [addDropdownContainerToBody]=\"true\"\n ></c8y-select-legacy>\n </div>\n </div>\n <div class=\"col-sm-6\">\n <div\n class=\"form-group\"\n title=\"{{ 'Default applications' | translate }}\"\n >\n <label\n class=\"control-label\"\n [for]=\"'apps' + accessMappingIndex\"\n >\n {{ 'Default applications' | translate }}\n </label>\n <c8y-select-legacy\n [id]=\"'apps' + accessMappingIndex\"\n [items]=\"apps\"\n [selected]=\"selectedApps\"\n [disableApplyOnNoSelection]=\"true\"\n (onChange)=\"\n controlContainer.control.markAsDirty();\n selectedApps = $event;\n accessMapping.thenApplications = getIds($event)\n \"\n [addDropdownContainerToBody]=\"true\"\n ></c8y-select-legacy>\n </div>\n </div>\n </div>\n </fieldset>\n </div>\n</fieldset>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ChildPredicatesComponent, selector: "c8y-sso-child-predicates", inputs: ["childPredicates", "accessMappingIndex"], outputs: ["onRemoveAllChildPredicates"] }, { kind: "component", type: SelectLegacyComponent, selector: "c8y-select-legacy", inputs: ["placeholder", "selectedLabel", "applyLabel", "items", "selected", "updateItems", "disableApplyOnNoSelection", "addDropdownContainerToBody"], outputs: ["onChange"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
|
|
1700
1700
|
}
|
|
1701
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1701
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DynamicAccessMappingComponent, decorators: [{
|
|
1702
1702
|
type: Component,
|
|
1703
1703
|
args: [{ selector: 'c8y-sso-dynamic-access-mapping', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], imports: [NgIf, ChildPredicatesComponent, SelectLegacyComponent, C8yTranslatePipe], template: "<fieldset class=\"c8y-fieldset p-8\">\n <div *ngIf=\"accessMapping.when.childPredicates.length != 0\">\n <c8y-sso-child-predicates\n [childPredicates]=\"accessMapping.when.childPredicates\"\n [accessMappingIndex]=\"'am' + accessMappingIndex\"\n (onRemoveAllChildPredicates)=\"onRemoveAllChildPredicates()\"\n ></c8y-sso-child-predicates>\n\n <fieldset class=\"c8y-fieldset p-16\">\n <legend>\n {{ 'Provide access to' | translate }}\n </legend>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <div\n class=\"form-group\"\n title=\"{{ 'Default global roles' | translate }}\"\n >\n <label\n class=\"control-label\"\n [for]=\"'groups' + accessMappingIndex\"\n >\n {{ 'Default global roles' | translate }}\n </label>\n <c8y-select-legacy\n [id]=\"'groups' + accessMappingIndex\"\n [items]=\"groups\"\n [selected]=\"selectedGroups\"\n [disableApplyOnNoSelection]=\"true\"\n (onChange)=\"\n controlContainer.control.markAsDirty();\n selectedGroups = $event;\n accessMapping.thenGroups = getIds($event)\n \"\n [addDropdownContainerToBody]=\"true\"\n ></c8y-select-legacy>\n </div>\n </div>\n <div class=\"col-sm-6\">\n <div\n class=\"form-group\"\n title=\"{{ 'Default applications' | translate }}\"\n >\n <label\n class=\"control-label\"\n [for]=\"'apps' + accessMappingIndex\"\n >\n {{ 'Default applications' | translate }}\n </label>\n <c8y-select-legacy\n [id]=\"'apps' + accessMappingIndex\"\n [items]=\"apps\"\n [selected]=\"selectedApps\"\n [disableApplyOnNoSelection]=\"true\"\n (onChange)=\"\n controlContainer.control.markAsDirty();\n selectedApps = $event;\n accessMapping.thenApplications = getIds($event)\n \"\n [addDropdownContainerToBody]=\"true\"\n ></c8y-select-legacy>\n </div>\n </div>\n </div>\n </fieldset>\n </div>\n</fieldset>\n" }]
|
|
1704
1704
|
}], ctorParameters: () => [{ type: i1.ControlContainer }], propDecorators: { groups: [{
|
|
@@ -1726,10 +1726,10 @@ class InventoryRolesModalComponent {
|
|
|
1726
1726
|
this.resultEmitter.emit(this.selectedGroups);
|
|
1727
1727
|
this.modal.hide();
|
|
1728
1728
|
}
|
|
1729
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1730
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
1729
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: InventoryRolesModalComponent, deps: [{ token: i1$3.BsModalRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1730
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: InventoryRolesModalComponent, isStandalone: true, selector: "c8y-sso-inventory-roles-modal", ngImport: i0, template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i c8yIcon=\"c8y-group-open\"></i>\n <h4 id=\"modal-title\">{{ 'Select from inventory' | translate }}</h4>\n </div>\n <div class=\"modal-inner-scroll\">\n <div\n id=\"modal-body\"\n class=\"bg-component\"\n >\n <c8y-asset-selector\n class=\"d-contents\"\n [(ngModel)]=\"selectedGroups\"\n [config]=\"{\n label: label,\n showFilter: true,\n multi: true,\n groupsSelectable: true,\n columnHeaders: false,\n singleColumn: true,\n groupsOnly: true\n }\"\n ></c8y-asset-selector>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Cancel' | translate }}\"\n (click)=\"dismiss()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Select' | translate }}\"\n (click)=\"select()\"\n >\n {{ 'Select' | translate }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: AssetSelectorComponent, selector: "c8y-asset-selector", inputs: ["config", "active", "index", "asset", "selectedDevice", "selected", "rootNode", "selectedItems", "container", "isNodeSelectable", "disabled"], outputs: ["onSelected", "onClearSelected", "onRowSelected", "onLoad"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
|
|
1731
1731
|
}
|
|
1732
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1732
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: InventoryRolesModalComponent, decorators: [{
|
|
1733
1733
|
type: Component,
|
|
1734
1734
|
args: [{ selector: 'c8y-sso-inventory-roles-modal', imports: [IconDirective, AssetSelectorComponent, FormsModule, C8yTranslatePipe], template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i c8yIcon=\"c8y-group-open\"></i>\n <h4 id=\"modal-title\">{{ 'Select from inventory' | translate }}</h4>\n </div>\n <div class=\"modal-inner-scroll\">\n <div\n id=\"modal-body\"\n class=\"bg-component\"\n >\n <c8y-asset-selector\n class=\"d-contents\"\n [(ngModel)]=\"selectedGroups\"\n [config]=\"{\n label: label,\n showFilter: true,\n multi: true,\n groupsSelectable: true,\n columnHeaders: false,\n singleColumn: true,\n groupsOnly: true\n }\"\n ></c8y-asset-selector>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Cancel' | translate }}\"\n (click)=\"dismiss()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Select' | translate }}\"\n (click)=\"select()\"\n >\n {{ 'Select' | translate }}\n </button>\n </div>\n</div>\n" }]
|
|
1735
1735
|
}], ctorParameters: () => [{ type: i1$3.BsModalRef }] });
|
|
@@ -1782,10 +1782,10 @@ class InventoryRolesMappingComponent {
|
|
|
1782
1782
|
});
|
|
1783
1783
|
}
|
|
1784
1784
|
}
|
|
1785
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1786
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
1785
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: InventoryRolesMappingComponent, deps: [{ token: i1.ControlContainer }, { token: i1$3.BsModalService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1786
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: InventoryRolesMappingComponent, isStandalone: true, selector: "c8y-sso-inventory-roles-mapping", inputs: { inventoryMapping: "inventoryMapping", inventoryMappingIndex: "inventoryMappingIndex", inventoryRoles: "inventoryRoles" }, outputs: { onRemoveInventoryMapping: "onRemoveInventoryMapping" }, usesOnChanges: true, ngImport: i0, template: "<fieldset class=\"c8y-fieldset p-t-8 p-b-8 p-l-16 p-r-16\">\n <div *ngIf=\"inventoryMapping.when.childPredicates.length !== 0\">\n <c8y-sso-child-predicates\n [childPredicates]=\"inventoryMapping.when.childPredicates\"\n [accessMappingIndex]=\"'irm' + inventoryMappingIndex\"\n (onRemoveAllChildPredicates)=\"onRemoveAllChildPredicates()\"\n ></c8y-sso-child-predicates>\n <fieldset class=\"c8y-fieldset p-16\">\n <legend>\n {{ 'Provide inventory roles' | translate }}\n </legend>\n <div\n class=\"p-l-8 p-r-8\"\n *ngIf=\"inventoryMapping.thenInventoryRoles.length !== 0\"\n >\n <div class=\"tight-grid p-b-8 separator-bottom hidden-sm hidden-xs\">\n <div class=\"col-md-5\">\n <label translate>Groups</label>\n </div>\n <div class=\"col-md-6\">\n <label translate>Inventory roles</label>\n </div>\n </div>\n <div\n class=\"tight-grid d-flex-md a-i-center p-t-8 p-b-8 separator-bottom\"\n *ngFor=\"let inventoryRole of inventoryMapping.thenInventoryRoles; index as idx\"\n >\n <div class=\"col-md-5\">\n <div class=\"d-flex a-i-center\">\n <!-- TODO:\n We need to retrive the icon here, for groups there are 3 possible icons:\n \u2022 Regular group\n \u2022 Remote group\n \u2022 Smartgroup\n Besides groups, there's also Assets from DTM, in which each asset has a different icon\n -->\n <i\n class=\"m-r-8 text-16\"\n c8yIcon=\"c8y-group\"\n ></i>\n <span\n class=\"text-truncate\"\n title=\"{{ inventoryRole.managedObject | moName | async }}\"\n >\n {{ inventoryRole.managedObject | moName | async }}\n </span>\n </div>\n </div>\n <div class=\"col-md-6\">\n <div\n class=\"form-group m-b-0\"\n title=\"{{ 'Inventory roles' | translate }}\"\n >\n <c8y-select-legacy\n [id]=\"'ir' + idx + '_' + 'irm' + inventoryMappingIndex\"\n [items]=\"inventoryRoles\"\n [selected]=\"selectedInventoryRoles[inventoryRole.managedObject]\"\n [disableApplyOnNoSelection]=\"true\"\n (onChange)=\"\n controlContainer.control.markAsDirty();\n selectedInventoryRoles[inventoryRole.managedObject] = $event;\n inventoryRole.roleIds = getIds($event)\n \"\n [addDropdownContainerToBody]=\"true\"\n ></c8y-select-legacy>\n </div>\n </div>\n <div class=\"col-md-1\">\n <button\n class=\"btn btn-dot btn-dot--danger hidden-xs hidden-sm\"\n [attr.aria-label]=\"'Remove' | translate\"\n tooltip=\"{{ 'Remove' | translate }}\"\n name=\"removeButton\"\n type=\"button\"\n (click)=\"controlContainer.control.markAsDirty(); removeInventoryRole(inventoryRole)\"\n [delay]=\"300\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n <button\n class=\"btn btn-danger btn-block btn-sm visible-xs visible-sm\"\n title=\"{{ 'Remove' | translate }}\"\n name=\"removeButton\"\n type=\"button\"\n (click)=\"controlContainer.control.markAsDirty(); removeInventoryRole(inventoryRole)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n <span translate>Remove</span>\n </button>\n </div>\n </div>\n </div>\n\n <button\n class=\"btn btn-default m-t-16\"\n title=\"{{ 'Add inventory roles' | translate }}\"\n id=\"add-inventory-roles-button\"\n type=\"button\"\n (click)=\"addInventoryRoles()\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"plus-circle\"\n ></i>\n {{ 'Add inventory roles' | translate }}\n </button>\n </fieldset>\n </div>\n</fieldset>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ChildPredicatesComponent, selector: "c8y-sso-child-predicates", inputs: ["childPredicates", "accessMappingIndex"], outputs: ["onRemoveAllChildPredicates"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: SelectLegacyComponent, selector: "c8y-select-legacy", inputs: ["placeholder", "selectedLabel", "applyLabel", "items", "selected", "updateItems", "disableApplyOnNoSelection", "addDropdownContainerToBody"], outputs: ["onChange"] }, { kind: "directive", type: TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: MoNamePipe, name: "moName" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
|
|
1787
1787
|
}
|
|
1788
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1788
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: InventoryRolesMappingComponent, decorators: [{
|
|
1789
1789
|
type: Component,
|
|
1790
1790
|
args: [{ selector: 'c8y-sso-inventory-roles-mapping', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], imports: [
|
|
1791
1791
|
NgIf,
|
|
@@ -1905,10 +1905,10 @@ class AccessMappingComponent {
|
|
|
1905
1905
|
? mapFromIdToken
|
|
1906
1906
|
: mapRolesOnlyForNewUser === false && manageRolesOnlyFromAccessMapping === false;
|
|
1907
1907
|
}
|
|
1908
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1909
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: AccessMappingComponent, isStandalone: true, selector: "c8y-sso-access-mapping", inputs: { apps: "apps", groups: "groups", inventoryRoles: "inventoryRoles", templateModel: "templateModel" }, viewQueries: [{ propertyName: "paginatedAccessMappings", first: true, predicate: ["paginatedAccessMappings"], descendants: true }, { propertyName: "paginatedInventoryMappings", first: true, predicate: ["paginatedInventoryMappings"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"p-24\">\n <div class=\"row\">\n <div class=\"col-xs-12 col-sm-3 col-md-2\">\n <div\n class=\"h4 text-normal text-right text-left-xs\"\n translate\n >\n Access mapping\n </div>\n </div>\n\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9\">\n <fieldset class=\"c8y-fieldset p-24\">\n <legend>{{ 'Source of dynamic access mapping' | translate }}</legend>\n <c8y-form-group>\n <label\n class=\"c8y-radio input-sm\"\n title=\"{{ RETRIVE_FROM_ACCESS_TOKEN | translate }}\"\n >\n <input\n name=\"dynamicAccessMappingSource\"\n type=\"radio\"\n data-cy=\"dynamic-access-mapping-from-access-token\"\n [checked]=\"!mapFromIdToken\"\n (change)=\"setMapFromIdToken(false)\"\n />\n <span></span>\n <span>{{ RETRIVE_FROM_ACCESS_TOKEN | translate }}</span>\n </label>\n <label\n class=\"c8y-radio input-sm\"\n title=\"{{ RETRIVE_FROM_ID_TOKEN | translate }}\"\n >\n <input\n name=\"dynamicAccessMappingSource\"\n type=\"radio\"\n data-cy=\"dynamic-access-mapping-from-id-token\"\n [checked]=\"mapFromIdToken\"\n (change)=\"setMapFromIdToken(true)\"\n />\n <span></span>\n <span>{{ RETRIVE_FROM_ID_TOKEN | translate }}</span>\n </label>\n </c8y-form-group>\n </fieldset>\n\n <fieldset class=\"c8y-fieldset p-24\">\n <legend>{{ 'Dynamic access mapping principle' | translate }}</legend>\n <c8y-form-group>\n <label\n class=\"c8y-radio input-sm\"\n title=\"{{ USE_ACCESS_MAPPING_ON_USER_CREATION_OPTION | translate }}\"\n >\n <input\n name=\"dynamicAccessMappingConfiguration\"\n type=\"radio\"\n data-cy=\"c8y-inventory-roles-mapping--on-user-creation\"\n [checked]=\"mapRolesOnlyForNewUser\"\n (change)=\"setDynamicMappingConfiguration(true)\"\n />\n <span></span>\n <span>{{ USE_ACCESS_MAPPING_ON_USER_CREATION_OPTION | translate }}</span>\n <button\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ USE_ACCESS_MAPPING_ON_USER_CREATION_TOOLTIP | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n <label\n class=\"c8y-radio input-sm\"\n title=\"{{ UPDATE_ROLES_LISTED_IN_ACCESS_MAPPING_ON_EACH_LOG_IN_OPTION | translate }}\"\n >\n <input\n name=\"dynamicAccessMappingConfiguration\"\n type=\"radio\"\n data-cy=\"c8y-inventory-roles-mapping--other-ones-will-be-unchanged\"\n [checked]=\"!mapRolesOnlyForNewUser && manageRolesOnlyFromAccessMapping\"\n (change)=\"setDynamicMappingConfiguration(false, true)\"\n />\n <span></span>\n <span>\n {{ UPDATE_ROLES_LISTED_IN_ACCESS_MAPPING_ON_EACH_LOG_IN_OPTION | translate }}\n </span>\n <button\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n UPDATE_ROLES_LISTED_IN_ACCESS_MAPPING_ON_EACH_LOG_IN_TOOLTIP | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n <label\n class=\"c8y-radio input-sm\"\n title=\"{{ CLEAR_AND_UPDATED_ROLES_ON_EACH_LOG_IN_OPTION | translate }}\"\n >\n <input\n name=\"dynamicAccessMappingConfiguration\"\n type=\"radio\"\n data-cy=\"c8y-inventory-roles-mapping--other-ones-will-be-cleared\"\n [checked]=\"!mapRolesOnlyForNewUser && !manageRolesOnlyFromAccessMapping\"\n (change)=\"setDynamicMappingConfiguration(false, false)\"\n />\n <span></span>\n <span>\n {{ CLEAR_AND_UPDATED_ROLES_ON_EACH_LOG_IN_OPTION | translate }}\n </span>\n <button\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ CLEAR_AND_UPDATED_ROLES_ON_EACH_LOG_IN_TOOLTIP | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n </c8y-form-group>\n </fieldset>\n <fieldset class=\"c8y-fieldset p-16\">\n <legend>{{ 'Dynamic access mapping' | translate }}</legend>\n <c8y-ui-empty-state\n [icon]=\"'list'\"\n [title]=\"'No access mapping rules defined.' | translate\"\n [subtitle]=\"'Click below to add a new mapping.' | translate\"\n *ngIf=\"templateModel.onNewUser.dynamicMapping.mappings.length === 0\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n <div\n class=\"container-fluid\"\n *ngIf=\"templateModel.onNewUser.dynamicMapping.mappings.length > 0\"\n >\n <c8y-paginated-list-group\n #paginatedAccessMappings\n [items]=\"templateModel.onNewUser.dynamicMapping.mappings\"\n >\n <ng-template\n let-accessMapping\n let-index=\"index\"\n >\n <c8y-sso-dynamic-access-mapping\n [accessMapping]=\"accessMapping\"\n (onRemoveAccessMapping)=\"onRemove(accessMapping)\"\n [apps]=\"apps\"\n [groups]=\"groups\"\n [accessMappingIndex]=\"index\"\n ></c8y-sso-dynamic-access-mapping>\n </ng-template>\n </c8y-paginated-list-group>\n </div>\n <div class=\"p-t-16\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Add access mapping' | translate }}\"\n id=\"add-access-mapping-button\"\n type=\"button\"\n (click)=\"addAccessMapping()\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"plus-circle\"\n ></i>\n {{ 'Add access mapping' | translate }}\n </button>\n </div>\n </fieldset>\n <fieldset class=\"c8y-fieldset p-16\">\n <legend>\n {{ 'Inventory roles mapping' | translate }}\n </legend>\n <c8y-ui-empty-state\n [icon]=\"'list'\"\n [title]=\"'No inventory roles mapping rules defined.' | translate\"\n [subtitle]=\"'Click below to add a new mapping.' | translate\"\n *ngIf=\"templateModel.onNewUser.dynamicMapping.inventoryMappings.length === 0\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n <div\n class=\"container-fluid\"\n *ngIf=\"templateModel.onNewUser.dynamicMapping.inventoryMappings.length > 0\"\n >\n <c8y-paginated-list-group\n #paginatedInventoryMappings\n [items]=\"templateModel.onNewUser.dynamicMapping.inventoryMappings\"\n >\n <ng-template\n let-inventoryMapping\n let-index=\"index\"\n >\n <c8y-sso-inventory-roles-mapping\n [inventoryRoles]=\"inventoryRoles\"\n [inventoryMapping]=\"inventoryMapping\"\n (onRemoveInventoryMapping)=\"onRemoveInventoryMapping(inventoryMapping)\"\n [inventoryMappingIndex]=\"index\"\n ></c8y-sso-inventory-roles-mapping>\n </ng-template>\n </c8y-paginated-list-group>\n </div>\n <div class=\"p-t-16\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Add inventory roles mapping' | translate }}\"\n id=\"add-inventory-mapping-button\"\n type=\"button\"\n (click)=\"addInventoryMapping()\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"plus-circle\"\n ></i>\n {{ 'Add inventory roles mapping' | translate }}\n </button>\n </div>\n </fieldset>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "component", type: PaginatedListGroupComponent, selector: "c8y-paginated-list-group", inputs: ["items", "itemsPerPage"] }, { kind: "component", type: DynamicAccessMappingComponent, selector: "c8y-sso-dynamic-access-mapping", inputs: ["groups", "apps", "accessMapping", "accessMappingIndex"], outputs: ["onRemoveAccessMapping"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: InventoryRolesMappingComponent, selector: "c8y-sso-inventory-roles-mapping", inputs: ["inventoryMapping", "inventoryMappingIndex", "inventoryRoles"], outputs: ["onRemoveInventoryMapping"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
|
|
1908
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AccessMappingComponent, deps: [{ token: i1.ControlContainer }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1909
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: AccessMappingComponent, isStandalone: true, selector: "c8y-sso-access-mapping", inputs: { apps: "apps", groups: "groups", inventoryRoles: "inventoryRoles", templateModel: "templateModel" }, viewQueries: [{ propertyName: "paginatedAccessMappings", first: true, predicate: ["paginatedAccessMappings"], descendants: true }, { propertyName: "paginatedInventoryMappings", first: true, predicate: ["paginatedInventoryMappings"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"p-24\">\n <div class=\"row\">\n <div class=\"col-xs-12 col-sm-3 col-md-2\">\n <div\n class=\"h4 text-normal text-right text-left-xs\"\n translate\n >\n Access mapping\n </div>\n </div>\n\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9\">\n <fieldset class=\"c8y-fieldset p-24\">\n <legend>{{ 'Source of dynamic access mapping' | translate }}</legend>\n <c8y-form-group>\n <label\n class=\"c8y-radio input-sm\"\n title=\"{{ RETRIVE_FROM_ACCESS_TOKEN | translate }}\"\n >\n <input\n name=\"dynamicAccessMappingSource\"\n type=\"radio\"\n data-cy=\"dynamic-access-mapping-from-access-token\"\n [checked]=\"!mapFromIdToken\"\n (change)=\"setMapFromIdToken(false)\"\n />\n <span></span>\n <span>{{ RETRIVE_FROM_ACCESS_TOKEN | translate }}</span>\n </label>\n <label\n class=\"c8y-radio input-sm\"\n title=\"{{ RETRIVE_FROM_ID_TOKEN | translate }}\"\n >\n <input\n name=\"dynamicAccessMappingSource\"\n type=\"radio\"\n data-cy=\"dynamic-access-mapping-from-id-token\"\n [checked]=\"mapFromIdToken\"\n (change)=\"setMapFromIdToken(true)\"\n />\n <span></span>\n <span>{{ RETRIVE_FROM_ID_TOKEN | translate }}</span>\n </label>\n </c8y-form-group>\n </fieldset>\n\n <fieldset class=\"c8y-fieldset p-24\">\n <legend>{{ 'Dynamic access mapping principle' | translate }}</legend>\n <c8y-form-group>\n <label\n class=\"c8y-radio input-sm\"\n title=\"{{ USE_ACCESS_MAPPING_ON_USER_CREATION_OPTION | translate }}\"\n >\n <input\n name=\"dynamicAccessMappingConfiguration\"\n type=\"radio\"\n data-cy=\"c8y-inventory-roles-mapping--on-user-creation\"\n [checked]=\"mapRolesOnlyForNewUser\"\n (change)=\"setDynamicMappingConfiguration(true)\"\n />\n <span></span>\n <span>{{ USE_ACCESS_MAPPING_ON_USER_CREATION_OPTION | translate }}</span>\n <button\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ USE_ACCESS_MAPPING_ON_USER_CREATION_TOOLTIP | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n <label\n class=\"c8y-radio input-sm\"\n title=\"{{ UPDATE_ROLES_LISTED_IN_ACCESS_MAPPING_ON_EACH_LOG_IN_OPTION | translate }}\"\n >\n <input\n name=\"dynamicAccessMappingConfiguration\"\n type=\"radio\"\n data-cy=\"c8y-inventory-roles-mapping--other-ones-will-be-unchanged\"\n [checked]=\"!mapRolesOnlyForNewUser && manageRolesOnlyFromAccessMapping\"\n (change)=\"setDynamicMappingConfiguration(false, true)\"\n />\n <span></span>\n <span>\n {{ UPDATE_ROLES_LISTED_IN_ACCESS_MAPPING_ON_EACH_LOG_IN_OPTION | translate }}\n </span>\n <button\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n UPDATE_ROLES_LISTED_IN_ACCESS_MAPPING_ON_EACH_LOG_IN_TOOLTIP | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n <label\n class=\"c8y-radio input-sm\"\n title=\"{{ CLEAR_AND_UPDATED_ROLES_ON_EACH_LOG_IN_OPTION | translate }}\"\n >\n <input\n name=\"dynamicAccessMappingConfiguration\"\n type=\"radio\"\n data-cy=\"c8y-inventory-roles-mapping--other-ones-will-be-cleared\"\n [checked]=\"!mapRolesOnlyForNewUser && !manageRolesOnlyFromAccessMapping\"\n (change)=\"setDynamicMappingConfiguration(false, false)\"\n />\n <span></span>\n <span>\n {{ CLEAR_AND_UPDATED_ROLES_ON_EACH_LOG_IN_OPTION | translate }}\n </span>\n <button\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ CLEAR_AND_UPDATED_ROLES_ON_EACH_LOG_IN_TOOLTIP | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </label>\n </c8y-form-group>\n </fieldset>\n <fieldset class=\"c8y-fieldset p-16\">\n <legend>{{ 'Dynamic access mapping' | translate }}</legend>\n <c8y-ui-empty-state\n [icon]=\"'list'\"\n [title]=\"'No access mapping rules defined.' | translate\"\n [subtitle]=\"'Click below to add a new mapping.' | translate\"\n *ngIf=\"templateModel.onNewUser.dynamicMapping.mappings.length === 0\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n <div\n class=\"container-fluid\"\n *ngIf=\"templateModel.onNewUser.dynamicMapping.mappings.length > 0\"\n >\n <c8y-paginated-list-group\n #paginatedAccessMappings\n [items]=\"templateModel.onNewUser.dynamicMapping.mappings\"\n >\n <ng-template\n let-accessMapping\n let-index=\"index\"\n >\n <c8y-sso-dynamic-access-mapping\n [accessMapping]=\"accessMapping\"\n (onRemoveAccessMapping)=\"onRemove(accessMapping)\"\n [apps]=\"apps\"\n [groups]=\"groups\"\n [accessMappingIndex]=\"index\"\n ></c8y-sso-dynamic-access-mapping>\n </ng-template>\n </c8y-paginated-list-group>\n </div>\n <div class=\"p-t-16\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Add access mapping' | translate }}\"\n id=\"add-access-mapping-button\"\n type=\"button\"\n (click)=\"addAccessMapping()\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"plus-circle\"\n ></i>\n {{ 'Add access mapping' | translate }}\n </button>\n </div>\n </fieldset>\n <fieldset class=\"c8y-fieldset p-16\">\n <legend>\n {{ 'Inventory roles mapping' | translate }}\n </legend>\n <c8y-ui-empty-state\n [icon]=\"'list'\"\n [title]=\"'No inventory roles mapping rules defined.' | translate\"\n [subtitle]=\"'Click below to add a new mapping.' | translate\"\n *ngIf=\"templateModel.onNewUser.dynamicMapping.inventoryMappings.length === 0\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n <div\n class=\"container-fluid\"\n *ngIf=\"templateModel.onNewUser.dynamicMapping.inventoryMappings.length > 0\"\n >\n <c8y-paginated-list-group\n #paginatedInventoryMappings\n [items]=\"templateModel.onNewUser.dynamicMapping.inventoryMappings\"\n >\n <ng-template\n let-inventoryMapping\n let-index=\"index\"\n >\n <c8y-sso-inventory-roles-mapping\n [inventoryRoles]=\"inventoryRoles\"\n [inventoryMapping]=\"inventoryMapping\"\n (onRemoveInventoryMapping)=\"onRemoveInventoryMapping(inventoryMapping)\"\n [inventoryMappingIndex]=\"index\"\n ></c8y-sso-inventory-roles-mapping>\n </ng-template>\n </c8y-paginated-list-group>\n </div>\n <div class=\"p-t-16\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Add inventory roles mapping' | translate }}\"\n id=\"add-inventory-mapping-button\"\n type=\"button\"\n (click)=\"addInventoryMapping()\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"plus-circle\"\n ></i>\n {{ 'Add inventory roles mapping' | translate }}\n </button>\n </div>\n </fieldset>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "component", type: PaginatedListGroupComponent, selector: "c8y-paginated-list-group", inputs: ["items", "itemsPerPage"] }, { kind: "component", type: DynamicAccessMappingComponent, selector: "c8y-sso-dynamic-access-mapping", inputs: ["groups", "apps", "accessMapping", "accessMappingIndex"], outputs: ["onRemoveAccessMapping"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: InventoryRolesMappingComponent, selector: "c8y-sso-inventory-roles-mapping", inputs: ["inventoryMapping", "inventoryMappingIndex", "inventoryRoles"], outputs: ["onRemoveInventoryMapping"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
|
|
1910
1910
|
}
|
|
1911
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1911
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AccessMappingComponent, decorators: [{
|
|
1912
1912
|
type: Component,
|
|
1913
1913
|
args: [{ selector: 'c8y-sso-access-mapping', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], imports: [
|
|
1914
1914
|
C8yTranslateDirective,
|
|
@@ -1957,10 +1957,10 @@ class UserDataMappingComponent {
|
|
|
1957
1957
|
this.templateModel.useIdToken = useIdToken;
|
|
1958
1958
|
this.controlContainer.control.markAsDirty();
|
|
1959
1959
|
}
|
|
1960
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1961
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
1960
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: UserDataMappingComponent, deps: [{ token: i1.ControlContainer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1961
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: UserDataMappingComponent, isStandalone: true, selector: "c8y-sso-user-data-mapping", inputs: { templateModel: "templateModel" }, ngImport: i0, template: "<div class=\"p-24\">\n <div class=\"row\">\n <div class=\"col-xs-12 col-sm-3 col-md-2\">\n <div\n class=\"h4 text-normal text-right text-left-xs\"\n translate\n >\n User data mappings\n </div>\n </div>\n\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9\">\n <fieldset class=\"c8y-fieldset p-24\">\n <legend>{{ 'Source of user data mapping' | translate }}</legend>\n <c8y-form-group>\n <label\n title=\"{{ RETRIVE_FROM_ACCESS_TOKEN | translate }}\"\n class=\"c8y-radio input-sm\"\n >\n <input\n type=\"radio\"\n name=\"userAccessMappingSource\"\n data-cy=\"user-access-mapping-from-access-token\"\n [checked]=\"!useIdToken\"\n (change)=\"setUseIdToken(false)\"\n />\n <span></span>\n <span>{{ RETRIVE_FROM_ACCESS_TOKEN | translate }}</span>\n </label>\n <label\n title=\"{{ RETRIVE_FROM_ID_TOKEN | translate }}\"\n class=\"c8y-radio input-sm\"\n >\n <input\n type=\"radio\"\n name=\"userAccessMappingSource\"\n data-cy=\"user-access-mapping-from-id-token\"\n [checked]=\"useIdToken\"\n (change)=\"setUseIdToken(true)\"\n />\n <span></span>\n <span>{{ RETRIVE_FROM_ID_TOKEN | translate }}</span>\n </label>\n </c8y-form-group>\n </fieldset>\n\n <fieldset class=\"c8y-fieldset p-24\">\n <legend>\n {{ 'Claim names' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ CLAIM_NAMES | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n ></button>\n </legend>\n\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label\n for=\"firstName\"\n class=\"control-label\"\n translate\n >\n First name\n </label>\n <input\n class=\"form-control\"\n name=\"firstName\"\n id=\"firstName\"\n [(ngModel)]=\"templateModel.accessTokenToUserDataMappings.firstNameClaimName\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'given_name' }\"\n />\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label\n for=\"lastName\"\n class=\"control-label\"\n translate\n >\n Last name\n </label>\n <input\n class=\"form-control\"\n name=\"lastName\"\n id=\"lastName\"\n [(ngModel)]=\"templateModel.accessTokenToUserDataMappings.lastNameClaimName\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'family_name' }\"\n />\n </c8y-form-group>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label\n for=\"email\"\n class=\"control-label\"\n translate\n >\n Email\n </label>\n <input\n class=\"form-control\"\n name=\"email\"\n id=\"email\"\n [(ngModel)]=\"templateModel.accessTokenToUserDataMappings.emailClaimName\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'email' }\"\n />\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label\n for=\"phoneNumber\"\n class=\"control-label\"\n translate\n >\n Phone number\n </label>\n <input\n class=\"form-control\"\n name=\"phoneNumber\"\n id=\"phoneNumber\"\n [(ngModel)]=\"templateModel.accessTokenToUserDataMappings.phoneNumberClaimName\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'phone_number' }\"\n />\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
|
|
1962
1962
|
}
|
|
1963
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1963
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: UserDataMappingComponent, decorators: [{
|
|
1964
1964
|
type: Component,
|
|
1965
1965
|
args: [{ selector: 'c8y-sso-user-data-mapping', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], imports: [
|
|
1966
1966
|
C8yTranslateDirective,
|
|
@@ -1992,8 +1992,8 @@ class SignatureConfigurationComponent {
|
|
|
1992
1992
|
this.templateModel.signatureVerificationConfig.manual.removeCustomCertificate(customCertificate);
|
|
1993
1993
|
this.controlContainer.control.markAsDirty();
|
|
1994
1994
|
}
|
|
1995
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1996
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: SignatureConfigurationComponent, isStandalone: true, selector: "c8y-sso-signature-configuration", inputs: { templateModel: "templateModel" }, ngImport: i0, template: "<div class=\"p-24\">\n <div class=\"row\">\n <div class=\"col-xs-12 col-sm-3 col-md-2\">\n <div\n class=\"h4 text-normal text-right text-left-xs\"\n translate\n >\n Signature verification\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9\">\n <div\n *ngIf=\"shouldShow('certificateType')\"\n class=\"form-group p-relative\"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <label\n for=\"certificateType\"\n class=\"control-label\"\n translate\n >\n Verifier\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"certificateType\"\n name=\"certificateType\"\n [(ngModel)]=\"templateModel.signatureVerificationConfig.certificateTypeChosen\"\n >\n <option\n *ngFor=\"let certificateType of certificateTypes | keyvalue\"\n [ngValue]=\"certificateType.key\"\n >\n {{ certificateType.value.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n </div>\n <div\n id=\"adfs\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.certificateTypeChosen === certificateType.ADFS\n \"\n class=\"row\"\n >\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label\n for=\"adfsManifestUrl\"\n class=\"control-label\"\n translate\n >\n ADFS manifest URL\n </label>\n <input\n type=\"url\"\n class=\"form-control\"\n required\n [placeholder]=\"\n 'e.g. {{ example }}'\n | translate\n : {\n example: 'https://adfs.tenant.com/federationmetadata/federationmetadata.xml'\n }\n \"\n [(ngModel)]=\"templateModel.signatureVerificationConfig.adfsManifest.manifestUrl\"\n name=\"adfsManifestUrl\"\n id=\"adfsManifestUrl\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div\n id=\"add\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.certificateTypeChosen === certificateType.AZURE\n \"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label\n for=\"publicKeyDiscoveryUrl\"\n class=\"control-label\"\n translate\n >\n Public key discovery URL\n </label>\n <input\n type=\"url\"\n id=\"publicKeyDiscoveryUrl\"\n class=\"form-control\"\n required\n [placeholder]=\"\n 'e.g. {{ example }}'\n | translate\n : { example: 'https://login.microsoftonline.de/tenant/discovery/keys' }\n \"\n name=\"publicKeyDiscoveryUrl\"\n [(ngModel)]=\"templateModel.signatureVerificationConfig.aad.publicKeyDiscoveryUrl\"\n />\n </c8y-form-group>\n </div>\n </div>\n </div>\n\n <div\n id=\"jwks\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.certificateTypeChosen === certificateType.JWKS\n \"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label\n for=\"jwksPublicKeyDiscoveryUrl\"\n class=\"control-label\"\n translate\n >\n JWKS URL\n </label>\n <input\n type=\"url\"\n class=\"form-control\"\n id=\"jwksPublicKeyDiscoveryUrl\"\n required\n [placeholder]=\"\n 'e.g. {{ example }}' | translate: { example: 'http://www.example.com/' }\n \"\n name=\"jwksUri\"\n [(ngModel)]=\"templateModel.signatureVerificationConfig.jwks.jwksUri\"\n />\n </c8y-form-group>\n </div>\n </div>\n </div>\n\n <div\n id=\"manual\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.certificateTypeChosen === certificateType.CUSTOM\n \"\n >\n <fieldset\n class=\"c8y-fieldset p-24\"\n *ngIf=\"templateModel.signatureVerificationConfig.manual.customCertificates.length > 1\"\n >\n <legend>\n {{ 'Manual' | translate }}\n </legend>\n <div class=\"row\">\n <div class=\"col-md-6\">\n <label\n for=\"certIdField\"\n class=\"control-label\"\n >\n {{ 'Certificate ID field' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ CERTIFICATE_ID_FIELD_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n ></button>\n </label>\n <input\n type=\"text\"\n class=\"form-control\"\n name=\"certIdField\"\n id=\"certIdField\"\n [(ngModel)]=\"templateModel.signatureVerificationConfig.manual.certIdField\"\n required\n />\n </div>\n </div>\n </fieldset>\n\n <fieldset class=\"c8y-fieldset p-24\">\n <legend>\n {{ 'Certificates' | translate }}\n </legend>\n <fieldset\n class=\"c8y-fieldset p-16\"\n *ngFor=\"\n let customCertificate of templateModel.signatureVerificationConfig.manual\n .customCertificates;\n index as crtIndex\n \"\n >\n <div class=\"row\">\n <div\n class=\"col-sm-6\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.manual.customCertificates.length > 1\n \"\n >\n <c8y-form-group>\n <label\n [for]=\"'customCertificateValue' + crtIndex\"\n class=\"control-label\"\n translate\n >\n Certificate ID value\n </label>\n <input\n [name]=\"'customCertificateValue' + crtIndex\"\n [id]=\"'customCertificateValue' + crtIndex\"\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"customCertificate.key\"\n required\n />\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label class=\"control-label\">\n {{ 'Type' | translate }}\n </label>\n <label\n title=\"{{ algorithmType.value.label | translate }}\"\n class=\"c8y-radio input-sm\"\n *ngFor=\"let algorithmType of algorithmTypes | keyvalue; index as algIndex\"\n >\n <input\n type=\"radio\"\n [name]=\"'alg' + crtIndex + algIndex\"\n [value]=\"algorithmType.key\"\n [(ngModel)]=\"customCertificate.alg\"\n />\n <span></span>\n <span>{{ algorithmType.value.label | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-md-5\">\n <c8y-form-group>\n <label\n class=\"control-label\"\n [for]=\"'publicKey' + crtIndex\"\n *ngIf=\"customCertificate.alg === algorithmTypes.PCKS.value\"\n translate\n >\n Certificate in PEM format\n </label>\n <label\n class=\"control-label\"\n [for]=\"'publicKey' + crtIndex\"\n *ngIf=\"customCertificate.alg === algorithmTypes.RSA.value\"\n translate\n >\n Public key in PEM format\n </label>\n <input\n [name]=\"'publicKey' + crtIndex\"\n [id]=\"'publicKey' + crtIndex\"\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"customCertificate.publicKey\"\n required\n />\n </c8y-form-group>\n </div>\n <div class=\"col-md-3\">\n <div class=\"form-group datepicker\">\n <c8y-form-group>\n <label\n [for]=\"'validFromPicker' + crtIndex\"\n class=\"control-label\"\n >\n {{ 'Valid from' | translate }}\n </label>\n <input\n [name]=\"'validFromPicker' + crtIndex\"\n [id]=\"'validFromPicker' + crtIndex\"\n [(ngModel)]=\"customCertificate.validFrom\"\n class=\"form-control\"\n [attr.aria-label]=\"'Date from' | translate\"\n placeholder=\"{{ 'Date from' | translate }}\"\n [bsConfig]=\"{ customTodayClass: 'today', adaptivePosition: true, dateInputFormat: dateInputFormat }\"\n [maxDate]=\"customCertificate.validTill\"\n bsDatepicker\n required\n />\n </c8y-form-group>\n </div>\n </div>\n <div class=\"col-md-3\">\n <div class=\"form-group datepicker\">\n <c8y-form-group>\n <label\n [for]=\"'validTillPicker' + crtIndex\"\n class=\"control-label\"\n >\n {{ 'Valid till' | translate }}\n </label>\n <input\n [name]=\"'validTillPicker' + crtIndex\"\n [id]=\"'validTillPicker' + crtIndex\"\n [(ngModel)]=\"customCertificate.validTill\"\n class=\"form-control\"\n placeholder=\"{{ 'Date to' | translate }}\"\n [attr.aria-label]=\"'Date to' | translate\"\n [bsConfig]=\"{ customTodayClass: 'today', adaptivePosition: true, dateInputFormat: dateInputFormat }\"\n bsDatepicker\n [minDate]=\"customCertificate.validFrom\"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n <div\n class=\"col-md-1\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.manual.customCertificates.length > 1\n \"\n >\n <label> </label>\n <button\n class=\"btn btn-danger btn-sm visible-xs visible-sm\"\n type=\"button\"\n title=\"{{ 'Delete certificate' | translate }}\"\n (click)=\"removeCustomCertificate(customCertificate)\"\n >\n <i\n c8yIcon=\"minus-circle\"\n class=\"m-r-4\"\n ></i>\n <span>{{ 'Delete certificate' | translate }}</span>\n </button>\n\n <button\n class=\"btn btn-dot btn-dot--danger visible-md visible-lg\"\n type=\"button\"\n tooltip=\"{{ 'Delete certificate' | translate }}\"\n placement=\"top\"\n [adaptivePosition]=\"false\"\n [attr.aria-label]=\"'Delete certificate' | translate\"\n [delay]=\"300\"\n (click)=\"removeCustomCertificate(customCertificate)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </div>\n </fieldset>\n <button\n class=\"btn btn-default m-t-8\"\n type=\"button\"\n title=\"{{ 'Add certificate' | translate }}\"\n (click)=\"templateModel.signatureVerificationConfig.manual.addCustomCertificate()\"\n name=\"addCertificate\"\n >\n <i\n c8yIcon=\"plus-circle\"\n class=\"m-r-4\"\n ></i>\n <span>{{ 'Add certificate' | translate }}</span>\n </button>\n </fieldset>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "directive", type: BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "directive", type: BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "ignoreMinMaxErrors", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: KeyValuePipe, name: "keyvalue" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
|
|
1995
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SignatureConfigurationComponent, deps: [{ token: i1.ControlContainer }, { token: i2.DateFormatService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1996
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: SignatureConfigurationComponent, isStandalone: true, selector: "c8y-sso-signature-configuration", inputs: { templateModel: "templateModel" }, ngImport: i0, template: "<div class=\"p-24\">\n <div class=\"row\">\n <div class=\"col-xs-12 col-sm-3 col-md-2\">\n <div\n class=\"h4 text-normal text-right text-left-xs\"\n translate\n >\n Signature verification\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9\">\n <div\n *ngIf=\"shouldShow('certificateType')\"\n class=\"form-group p-relative\"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <label\n for=\"certificateType\"\n class=\"control-label\"\n translate\n >\n Verifier\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"certificateType\"\n name=\"certificateType\"\n [(ngModel)]=\"templateModel.signatureVerificationConfig.certificateTypeChosen\"\n >\n <option\n *ngFor=\"let certificateType of certificateTypes | keyvalue\"\n [ngValue]=\"certificateType.key\"\n >\n {{ certificateType.value.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n </div>\n <div\n id=\"adfs\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.certificateTypeChosen === certificateType.ADFS\n \"\n class=\"row\"\n >\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label\n for=\"adfsManifestUrl\"\n class=\"control-label\"\n translate\n >\n ADFS manifest URL\n </label>\n <input\n type=\"url\"\n class=\"form-control\"\n required\n [placeholder]=\"\n 'e.g. {{ example }}'\n | translate\n : {\n example: 'https://adfs.tenant.com/federationmetadata/federationmetadata.xml'\n }\n \"\n [(ngModel)]=\"templateModel.signatureVerificationConfig.adfsManifest.manifestUrl\"\n name=\"adfsManifestUrl\"\n id=\"adfsManifestUrl\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div\n id=\"add\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.certificateTypeChosen === certificateType.AZURE\n \"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label\n for=\"publicKeyDiscoveryUrl\"\n class=\"control-label\"\n translate\n >\n Public key discovery URL\n </label>\n <input\n type=\"url\"\n id=\"publicKeyDiscoveryUrl\"\n class=\"form-control\"\n required\n [placeholder]=\"\n 'e.g. {{ example }}'\n | translate\n : { example: 'https://login.microsoftonline.de/tenant/discovery/keys' }\n \"\n name=\"publicKeyDiscoveryUrl\"\n [(ngModel)]=\"templateModel.signatureVerificationConfig.aad.publicKeyDiscoveryUrl\"\n />\n </c8y-form-group>\n </div>\n </div>\n </div>\n\n <div\n id=\"jwks\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.certificateTypeChosen === certificateType.JWKS\n \"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label\n for=\"jwksPublicKeyDiscoveryUrl\"\n class=\"control-label\"\n translate\n >\n JWKS URL\n </label>\n <input\n type=\"url\"\n class=\"form-control\"\n id=\"jwksPublicKeyDiscoveryUrl\"\n required\n [placeholder]=\"\n 'e.g. {{ example }}' | translate: { example: 'http://www.example.com/' }\n \"\n name=\"jwksUri\"\n [(ngModel)]=\"templateModel.signatureVerificationConfig.jwks.jwksUri\"\n />\n </c8y-form-group>\n </div>\n </div>\n </div>\n\n <div\n id=\"manual\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.certificateTypeChosen === certificateType.CUSTOM\n \"\n >\n <fieldset\n class=\"c8y-fieldset p-24\"\n *ngIf=\"templateModel.signatureVerificationConfig.manual.customCertificates.length > 1\"\n >\n <legend>\n {{ 'Manual' | translate }}\n </legend>\n <div class=\"row\">\n <div class=\"col-md-6\">\n <label\n for=\"certIdField\"\n class=\"control-label\"\n >\n {{ 'Certificate ID field' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ CERTIFICATE_ID_FIELD_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n ></button>\n </label>\n <input\n type=\"text\"\n class=\"form-control\"\n name=\"certIdField\"\n id=\"certIdField\"\n [(ngModel)]=\"templateModel.signatureVerificationConfig.manual.certIdField\"\n required\n />\n </div>\n </div>\n </fieldset>\n\n <fieldset class=\"c8y-fieldset p-24\">\n <legend>\n {{ 'Certificates' | translate }}\n </legend>\n <fieldset\n class=\"c8y-fieldset p-16\"\n *ngFor=\"\n let customCertificate of templateModel.signatureVerificationConfig.manual\n .customCertificates;\n index as crtIndex\n \"\n >\n <div class=\"row\">\n <div\n class=\"col-sm-6\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.manual.customCertificates.length > 1\n \"\n >\n <c8y-form-group>\n <label\n [for]=\"'customCertificateValue' + crtIndex\"\n class=\"control-label\"\n translate\n >\n Certificate ID value\n </label>\n <input\n [name]=\"'customCertificateValue' + crtIndex\"\n [id]=\"'customCertificateValue' + crtIndex\"\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"customCertificate.key\"\n required\n />\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label class=\"control-label\">\n {{ 'Type' | translate }}\n </label>\n <label\n title=\"{{ algorithmType.value.label | translate }}\"\n class=\"c8y-radio input-sm\"\n *ngFor=\"let algorithmType of algorithmTypes | keyvalue; index as algIndex\"\n >\n <input\n type=\"radio\"\n [name]=\"'alg' + crtIndex + algIndex\"\n [value]=\"algorithmType.key\"\n [(ngModel)]=\"customCertificate.alg\"\n />\n <span></span>\n <span>{{ algorithmType.value.label | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-md-5\">\n <c8y-form-group>\n <label\n class=\"control-label\"\n [for]=\"'publicKey' + crtIndex\"\n *ngIf=\"customCertificate.alg === algorithmTypes.PCKS.value\"\n translate\n >\n Certificate in PEM format\n </label>\n <label\n class=\"control-label\"\n [for]=\"'publicKey' + crtIndex\"\n *ngIf=\"customCertificate.alg === algorithmTypes.RSA.value\"\n translate\n >\n Public key in PEM format\n </label>\n <input\n [name]=\"'publicKey' + crtIndex\"\n [id]=\"'publicKey' + crtIndex\"\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"customCertificate.publicKey\"\n required\n />\n </c8y-form-group>\n </div>\n <div class=\"col-md-3\">\n <div class=\"form-group datepicker\">\n <c8y-form-group>\n <label\n [for]=\"'validFromPicker' + crtIndex\"\n class=\"control-label\"\n >\n {{ 'Valid from' | translate }}\n </label>\n <input\n [name]=\"'validFromPicker' + crtIndex\"\n [id]=\"'validFromPicker' + crtIndex\"\n [(ngModel)]=\"customCertificate.validFrom\"\n class=\"form-control\"\n [attr.aria-label]=\"'Date from' | translate\"\n placeholder=\"{{ 'Date from' | translate }}\"\n [bsConfig]=\"{ customTodayClass: 'today', adaptivePosition: true, dateInputFormat: dateInputFormat }\"\n [maxDate]=\"customCertificate.validTill\"\n bsDatepicker\n required\n />\n </c8y-form-group>\n </div>\n </div>\n <div class=\"col-md-3\">\n <div class=\"form-group datepicker\">\n <c8y-form-group>\n <label\n [for]=\"'validTillPicker' + crtIndex\"\n class=\"control-label\"\n >\n {{ 'Valid till' | translate }}\n </label>\n <input\n [name]=\"'validTillPicker' + crtIndex\"\n [id]=\"'validTillPicker' + crtIndex\"\n [(ngModel)]=\"customCertificate.validTill\"\n class=\"form-control\"\n placeholder=\"{{ 'Date to' | translate }}\"\n [attr.aria-label]=\"'Date to' | translate\"\n [bsConfig]=\"{ customTodayClass: 'today', adaptivePosition: true, dateInputFormat: dateInputFormat }\"\n bsDatepicker\n [minDate]=\"customCertificate.validFrom\"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n <div\n class=\"col-md-1\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.manual.customCertificates.length > 1\n \"\n >\n <label> </label>\n <button\n class=\"btn btn-danger btn-sm visible-xs visible-sm\"\n type=\"button\"\n title=\"{{ 'Delete certificate' | translate }}\"\n (click)=\"removeCustomCertificate(customCertificate)\"\n >\n <i\n c8yIcon=\"minus-circle\"\n class=\"m-r-4\"\n ></i>\n <span>{{ 'Delete certificate' | translate }}</span>\n </button>\n\n <button\n class=\"btn btn-dot btn-dot--danger visible-md visible-lg\"\n type=\"button\"\n tooltip=\"{{ 'Delete certificate' | translate }}\"\n placement=\"top\"\n [adaptivePosition]=\"false\"\n [attr.aria-label]=\"'Delete certificate' | translate\"\n [delay]=\"300\"\n (click)=\"removeCustomCertificate(customCertificate)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </div>\n </fieldset>\n <button\n class=\"btn btn-default m-t-8\"\n type=\"button\"\n title=\"{{ 'Add certificate' | translate }}\"\n (click)=\"templateModel.signatureVerificationConfig.manual.addCustomCertificate()\"\n name=\"addCertificate\"\n >\n <i\n c8yIcon=\"plus-circle\"\n class=\"m-r-4\"\n ></i>\n <span>{{ 'Add certificate' | translate }}</span>\n </button>\n </fieldset>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "directive", type: BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "directive", type: BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "ignoreMinMaxErrors", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: KeyValuePipe, name: "keyvalue" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
|
|
1997
1997
|
}
|
|
1998
1998
|
__decorate([
|
|
1999
1999
|
memoize(),
|
|
@@ -2001,7 +2001,7 @@ __decorate([
|
|
|
2001
2001
|
__metadata("design:paramtypes", [String]),
|
|
2002
2002
|
__metadata("design:returntype", void 0)
|
|
2003
2003
|
], SignatureConfigurationComponent.prototype, "shouldShow", null);
|
|
2004
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
2004
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SignatureConfigurationComponent, decorators: [{
|
|
2005
2005
|
type: Component,
|
|
2006
2006
|
args: [{ selector: 'c8y-sso-signature-configuration', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], imports: [
|
|
2007
2007
|
C8yTranslateDirective,
|
|
@@ -2027,10 +2027,10 @@ class CustomTemplateComponent extends TemplateComponent {
|
|
|
2027
2027
|
super(customConfigurationMapper);
|
|
2028
2028
|
this.customConfigurationMapper = customConfigurationMapper;
|
|
2029
2029
|
}
|
|
2030
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
2031
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
2030
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CustomTemplateComponent, deps: [{ token: CustomConfigurationMapper }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2031
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: CustomTemplateComponent, isStandalone: true, selector: "c8y-custom-template", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"templateModel\">\n <c8y-request-configuration\n [templateModel]=\"templateModel\"\n [requestName]=\"'Authorization request' | translate\"\n [requestType]=\"'authorizationRequest'\"\n ></c8y-request-configuration>\n <hr />\n <c8y-request-configuration\n [templateModel]=\"templateModel\"\n [requestName]=\"'Token request' | translate\"\n [requestType]=\"'tokenRequest'\"\n ></c8y-request-configuration>\n <hr />\n <c8y-request-configuration\n [templateModel]=\"templateModel\"\n [requestName]=\"'Refresh request' | translate\"\n [requestType]=\"'refreshRequest'\"\n ></c8y-request-configuration>\n <hr />\n <c8y-request-configuration\n [templateModel]=\"templateModel\"\n [requestName]=\"'Logout request' | translate\"\n [requestType]=\"'logoutRequest'\"\n ></c8y-request-configuration>\n <hr />\n <c8y-external-token-config [templateModel]=\"templateModel\"></c8y-external-token-config>\n <hr />\n <c8y-basic-configuration [templateModel]=\"templateModel\"></c8y-basic-configuration>\n <hr />\n <c8y-sso-access-mapping\n [templateModel]=\"templateModel\"\n [apps]=\"apps\"\n [groups]=\"groups\"\n [inventoryRoles]=\"inventoryRoles\"\n ></c8y-sso-access-mapping>\n <hr />\n <c8y-sso-user-data-mapping [templateModel]=\"templateModel\"></c8y-sso-user-data-mapping>\n <c8y-user-id-configuration\n [userIdConfig]=\"templateModel.userIdConfig\"\n ></c8y-user-id-configuration>\n <hr />\n <c8y-sso-signature-configuration\n [templateModel]=\"templateModel\"\n ></c8y-sso-signature-configuration>\n</ng-container>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: RequestConfigurationComponent, selector: "c8y-request-configuration", inputs: ["templateModel", "requestName", "requestType"] }, { kind: "component", type: ExternalTokenConfigComponent, selector: "c8y-external-token-config", inputs: ["templateModel"] }, { kind: "component", type: BasicConfigurationComponent, selector: "c8y-basic-configuration", inputs: ["templateModel"] }, { kind: "component", type: AccessMappingComponent, selector: "c8y-sso-access-mapping", inputs: ["apps", "groups", "inventoryRoles", "templateModel"] }, { kind: "component", type: UserDataMappingComponent, selector: "c8y-sso-user-data-mapping", inputs: ["templateModel"] }, { kind: "component", type: UserIdConfigurationComponent, selector: "c8y-user-id-configuration", inputs: ["userIdConfig", "withHeader"] }, { kind: "component", type: SignatureConfigurationComponent, selector: "c8y-sso-signature-configuration", inputs: ["templateModel"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
|
|
2032
2032
|
}
|
|
2033
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
2033
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CustomTemplateComponent, decorators: [{
|
|
2034
2034
|
type: Component,
|
|
2035
2035
|
args: [{ selector: 'c8y-custom-template', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], imports: [
|
|
2036
2036
|
NgIf,
|
|
@@ -2227,10 +2227,10 @@ class AadConfigurationMapper {
|
|
|
2227
2227
|
getQueryString(params) {
|
|
2228
2228
|
return map$1(params, (value, key) => `${key}=${value}`).join('&');
|
|
2229
2229
|
}
|
|
2230
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
2231
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
2230
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AadConfigurationMapper, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2231
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AadConfigurationMapper, providedIn: 'root' }); }
|
|
2232
2232
|
}
|
|
2233
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
2233
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AadConfigurationMapper, decorators: [{
|
|
2234
2234
|
type: Injectable,
|
|
2235
2235
|
args: [{
|
|
2236
2236
|
providedIn: 'root'
|
|
@@ -2238,10 +2238,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
2238
2238
|
}] });
|
|
2239
2239
|
|
|
2240
2240
|
class LogoutConfigurationComponent {
|
|
2241
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
2242
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
2241
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LogoutConfigurationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2242
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: LogoutConfigurationComponent, isStandalone: true, selector: "c8y-sso-logout-configuration", inputs: { templateModel: "templateModel" }, ngImport: i0, template: "<div class=\"col-md-12 p-t-16\">\n <div class=\"row m-l-8 m-r-8\">\n <div class=\"col-xs-12 col-sm-3 col-md-2\">\n <div class=\"h4 text-normal text-right text-left-xs\" translate>Logout configuration</div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9\">\n <c8y-form-group>\n <label\n for=\"redirectAfterLogout\"\n title=\"{{ 'Redirect after logout' | translate }}\"\n class=\"c8y-switch\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"templateModel.redirectAfterLogout\"\n name=\"redirectAfterLogout\"\n id=\"redirectAfterLogout\"\n />\n <span></span>\n <span class=\"control-label\">{{ 'Redirect after logout' | translate }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group *ngIf=\"templateModel.redirectAfterLogout\">\n <label for=\"redirectAfterLogoutUrl\" class=\"control-label\" translate>Redirect URL</label>\n <input\n class=\"form-control\"\n name=\"redirectAfterLogoutUrl\"\n id=\"redirectAfterLogoutUrl\"\n type=\"url\"\n [(ngModel)]=\"templateModel.redirectAfterLogoutUrl\"\n placeholder=\"{{ 'e.g. https://my-tenant.cumulocity.com/apps/cockpit' | translate }}\"\n c8yDefaultValidation=\"httpUrl\"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: DefaultValidationDirective, selector: "[c8yDefaultValidation]", inputs: ["c8yDefaultValidation"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
|
|
2243
2243
|
}
|
|
2244
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
2244
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LogoutConfigurationComponent, decorators: [{
|
|
2245
2245
|
type: Component,
|
|
2246
2246
|
args: [{ selector: 'c8y-sso-logout-configuration', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], imports: [
|
|
2247
2247
|
C8yTranslateDirective,
|
|
@@ -2261,10 +2261,10 @@ class AadTemplateComponent extends TemplateComponent {
|
|
|
2261
2261
|
super(aadConfigurationMapper);
|
|
2262
2262
|
this.aadConfigurationMapper = aadConfigurationMapper;
|
|
2263
2263
|
}
|
|
2264
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
2265
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
2264
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AadTemplateComponent, deps: [{ token: AadConfigurationMapper }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2265
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: AadTemplateComponent, isStandalone: true, selector: "c8y-aad-template", usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"templateModel\">\n <c8y-basic-configuration [templateModel]=\"templateModel\"></c8y-basic-configuration>\n <hr />\n <c8y-sso-logout-configuration [templateModel]=\"templateModel\"></c8y-sso-logout-configuration>\n <hr />\n <c8y-external-token-config [templateModel]=\"templateModel\"></c8y-external-token-config>\n <hr />\n <c8y-sso-access-mapping\n [templateModel]=\"templateModel\"\n [apps]=\"apps\"\n [groups]=\"groups\"\n [inventoryRoles]=\"inventoryRoles\"\n ></c8y-sso-access-mapping>\n <hr />\n <c8y-sso-user-data-mapping [templateModel]=\"templateModel\"></c8y-sso-user-data-mapping>\n <c8y-user-id-configuration\n [userIdConfig]=\"templateModel.userIdConfig\"\n ></c8y-user-id-configuration>\n <hr />\n <c8y-sso-signature-configuration\n [templateModel]=\"templateModel\"\n ></c8y-sso-signature-configuration>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: BasicConfigurationComponent, selector: "c8y-basic-configuration", inputs: ["templateModel"] }, { kind: "component", type: LogoutConfigurationComponent, selector: "c8y-sso-logout-configuration", inputs: ["templateModel"] }, { kind: "component", type: ExternalTokenConfigComponent, selector: "c8y-external-token-config", inputs: ["templateModel"] }, { kind: "component", type: AccessMappingComponent, selector: "c8y-sso-access-mapping", inputs: ["apps", "groups", "inventoryRoles", "templateModel"] }, { kind: "component", type: UserDataMappingComponent, selector: "c8y-sso-user-data-mapping", inputs: ["templateModel"] }, { kind: "component", type: UserIdConfigurationComponent, selector: "c8y-user-id-configuration", inputs: ["userIdConfig", "withHeader"] }, { kind: "component", type: SignatureConfigurationComponent, selector: "c8y-sso-signature-configuration", inputs: ["templateModel"] }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
|
|
2266
2266
|
}
|
|
2267
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
2267
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AadTemplateComponent, decorators: [{
|
|
2268
2268
|
type: Component,
|
|
2269
2269
|
args: [{ selector: 'c8y-aad-template', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], imports: [
|
|
2270
2270
|
NgIf,
|
|
@@ -2387,10 +2387,10 @@ class KeyCloakConfigurationMapper {
|
|
|
2387
2387
|
getScopeId(ssoConfiguration) {
|
|
2388
2388
|
return get(ssoConfiguration, 'authorizationRequest.requestParams.scope', '');
|
|
2389
2389
|
}
|
|
2390
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
2391
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
2390
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: KeyCloakConfigurationMapper, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2391
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: KeyCloakConfigurationMapper, providedIn: 'root' }); }
|
|
2392
2392
|
}
|
|
2393
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
2393
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: KeyCloakConfigurationMapper, decorators: [{
|
|
2394
2394
|
type: Injectable,
|
|
2395
2395
|
args: [{
|
|
2396
2396
|
providedIn: 'root'
|
|
@@ -2402,10 +2402,10 @@ class KeyCloakTemplateComponent extends TemplateComponent {
|
|
|
2402
2402
|
super(keyCloakConfigurationMapper);
|
|
2403
2403
|
this.keyCloakConfigurationMapper = keyCloakConfigurationMapper;
|
|
2404
2404
|
}
|
|
2405
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
2406
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
2405
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: KeyCloakTemplateComponent, deps: [{ token: KeyCloakConfigurationMapper }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2406
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: KeyCloakTemplateComponent, isStandalone: true, selector: "c8y-key-cloak-template", usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"templateModel\">\n <c8y-basic-configuration [templateModel]=\"templateModel\"></c8y-basic-configuration>\n <hr />\n <c8y-request-configuration\n [templateModel]=\"templateModel\"\n [requestName]=\"'Logout request' | translate\"\n [requestType]=\"'logoutRequest'\"\n ></c8y-request-configuration>\n <hr />\n <c8y-external-token-config [templateModel]=\"templateModel\"></c8y-external-token-config>\n <hr />\n <c8y-sso-access-mapping\n [templateModel]=\"templateModel\"\n [apps]=\"apps\"\n [groups]=\"groups\"\n [inventoryRoles]=\"inventoryRoles\"\n ></c8y-sso-access-mapping>\n <hr />\n <c8y-sso-user-data-mapping [templateModel]=\"templateModel\"></c8y-sso-user-data-mapping>\n <c8y-user-id-configuration\n [userIdConfig]=\"templateModel.userIdConfig\"\n ></c8y-user-id-configuration>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: BasicConfigurationComponent, selector: "c8y-basic-configuration", inputs: ["templateModel"] }, { kind: "component", type: RequestConfigurationComponent, selector: "c8y-request-configuration", inputs: ["templateModel", "requestName", "requestType"] }, { kind: "component", type: ExternalTokenConfigComponent, selector: "c8y-external-token-config", inputs: ["templateModel"] }, { kind: "component", type: AccessMappingComponent, selector: "c8y-sso-access-mapping", inputs: ["apps", "groups", "inventoryRoles", "templateModel"] }, { kind: "component", type: UserDataMappingComponent, selector: "c8y-sso-user-data-mapping", inputs: ["templateModel"] }, { kind: "component", type: UserIdConfigurationComponent, selector: "c8y-user-id-configuration", inputs: ["userIdConfig", "withHeader"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
|
|
2407
2407
|
}
|
|
2408
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
2408
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: KeyCloakTemplateComponent, decorators: [{
|
|
2409
2409
|
type: Component,
|
|
2410
2410
|
args: [{ selector: 'c8y-key-cloak-template', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], imports: [
|
|
2411
2411
|
NgIf,
|
|
@@ -2496,10 +2496,10 @@ class SsoConfigurationComponent {
|
|
|
2496
2496
|
const modalBody = gettext('Updating SSO configuration will log out all users logged with "OAI-Secure" or "Single sign-on redirect". Do you want to proceed?');
|
|
2497
2497
|
return await this.modalService.confirm(gettext('Force users to log out'), modalBody, Status.WARNING, modalLabels);
|
|
2498
2498
|
}
|
|
2499
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
2500
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
2499
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SsoConfigurationComponent, deps: [{ token: SsoConfigurationService }, { token: i1$1.ApplicationService }, { token: i1$1.UserGroupService }, { token: i1$1.InventoryRoleService }, { token: i2.AlertService }, { token: i2.ModalService }, { token: i2.SimplifiedAuthService }, { token: i2.TenantUiService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2500
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: SsoConfigurationComponent, isStandalone: true, selector: "c8y-sso-configuration", viewQueries: [{ propertyName: "ssoConfigurationForm", first: true, predicate: ["ssoConfigurationForm"], descendants: true }], ngImport: i0, template: "<c8y-title>{{ 'Single sign-on' | translate }}</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'cog'\"\n [label]=\"'Settings' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'cog'\"\n [label]=\"'Single sign-on' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\n (click)=\"loadSsoConfiguration()\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': reloading$ | async }\"\n ></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n itemClass=\"navbar-form hidden-xs\"\n>\n <div\n class=\"form-group d-flex m-b-0\"\n title=\"{{ 'Template' | translate }}\"\n >\n <label\n class=\"control-label\"\n for=\"template\"\n >\n {{ 'Template' | translate }}\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"template\"\n name=\"template\"\n *ngIf=\"ssoConfiguration\"\n [(ngModel)]=\"ssoConfiguration.template\"\n >\n <option\n *ngFor=\"let templateType of templateTypeConfig | keyvalue\"\n [ngValue]=\"templateType.key\"\n >\n {{ templateType.value.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n</c8y-action-bar-item>\n\n<div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <form\n class=\"card card--fullpage\"\n #ssoConfigurationForm=\"ngForm\"\n novalidate\n >\n <div class=\"card-header separator\">\n <div class=\"card-title\">\n {{ 'Single sign-on' | translate }}\n </div>\n </div>\n\n <div class=\"inner-scroll\">\n <div\n class=\"card-block p-0\"\n *ngIf=\"ssoConfiguration\"\n >\n <c8y-custom-template\n *ngIf=\"ssoConfiguration.template === templateType.CUSTOM\"\n [ssoConfiguration]=\"ssoConfiguration\"\n [ssoConfigurationChangeTrigger]=\"saveSubject.asObservable()\"\n (ssoConfigurationChange)=\"save($event)\"\n [apps]=\"apps\"\n [groups]=\"groups\"\n [inventoryRoles]=\"inventoryRoles\"\n ></c8y-custom-template>\n\n <c8y-aad-template\n *ngIf=\"ssoConfiguration.template === templateType.AZURE\"\n [ssoConfiguration]=\"ssoConfiguration\"\n [ssoConfigurationChangeTrigger]=\"saveSubject.asObservable()\"\n (ssoConfigurationChange)=\"save($event)\"\n [apps]=\"apps\"\n [groups]=\"groups\"\n [inventoryRoles]=\"inventoryRoles\"\n ></c8y-aad-template>\n\n <c8y-key-cloak-template\n *ngIf=\"ssoConfiguration.template === templateType.KEYCLOAK\"\n [ssoConfiguration]=\"ssoConfiguration\"\n [ssoConfigurationChangeTrigger]=\"saveSubject.asObservable()\"\n (ssoConfigurationChange)=\"save($event)\"\n [apps]=\"apps\"\n [groups]=\"groups\"\n [inventoryRoles]=\"inventoryRoles\"\n ></c8y-key-cloak-template>\n </div>\n </div>\n <div class=\"card-footer separator\">\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n (click)=\"saveSubject.next()\"\n [disabled]=\"!ssoConfigurationForm.form.valid || ssoConfigurationForm.form.pristine\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </form>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: CustomTemplateComponent, selector: "c8y-custom-template" }, { kind: "component", type: AadTemplateComponent, selector: "c8y-aad-template" }, { kind: "component", type: KeyCloakTemplateComponent, selector: "c8y-key-cloak-template" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: KeyValuePipe, name: "keyvalue" }] }); }
|
|
2501
2501
|
}
|
|
2502
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
2502
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SsoConfigurationComponent, decorators: [{
|
|
2503
2503
|
type: Component,
|
|
2504
2504
|
args: [{ selector: 'c8y-sso-configuration', imports: [
|
|
2505
2505
|
TitleComponent,
|
|
@@ -2530,16 +2530,16 @@ class SsoConfigurationGuard {
|
|
|
2530
2530
|
canActivate() {
|
|
2531
2531
|
return this.ssoConfigurationService.getSsoConfiguration$().pipe(mapTo(true), catchError(() => of(false)));
|
|
2532
2532
|
}
|
|
2533
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
2534
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
2533
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SsoConfigurationGuard, deps: [{ token: SsoConfigurationService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2534
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SsoConfigurationGuard }); }
|
|
2535
2535
|
}
|
|
2536
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
2536
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SsoConfigurationGuard, decorators: [{
|
|
2537
2537
|
type: Injectable
|
|
2538
2538
|
}], ctorParameters: () => [{ type: SsoConfigurationService }] });
|
|
2539
2539
|
|
|
2540
2540
|
class SsoConfigurationModule {
|
|
2541
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
2542
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.
|
|
2541
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SsoConfigurationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
2542
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: SsoConfigurationModule, imports: [CoreModule,
|
|
2543
2543
|
TooltipModule,
|
|
2544
2544
|
PopoverModule, i1$4.CollapseModule, BsDatepickerModule,
|
|
2545
2545
|
AssetSelectorModule,
|
|
@@ -2560,7 +2560,7 @@ class SsoConfigurationModule {
|
|
|
2560
2560
|
InventoryRolesMappingComponent,
|
|
2561
2561
|
InventoryRolesModalComponent,
|
|
2562
2562
|
ExternalTokenConfigComponent], exports: [SsoConfigurationComponent] }); }
|
|
2563
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.
|
|
2563
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SsoConfigurationModule, providers: [
|
|
2564
2564
|
SsoConfigurationGuard,
|
|
2565
2565
|
SsoConfigurationService,
|
|
2566
2566
|
AadConfigurationMapper,
|
|
@@ -2595,7 +2595,7 @@ class SsoConfigurationModule {
|
|
|
2595
2595
|
InventoryRolesModalComponent,
|
|
2596
2596
|
ExternalTokenConfigComponent] }); }
|
|
2597
2597
|
}
|
|
2598
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
2598
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SsoConfigurationModule, decorators: [{
|
|
2599
2599
|
type: NgModule,
|
|
2600
2600
|
args: [{
|
|
2601
2601
|
imports: [
|
|
@@ -2664,10 +2664,10 @@ class AuthConfigurationTabsFactory {
|
|
|
2664
2664
|
}), catchError(() => EMPTY));
|
|
2665
2665
|
return merge([basicSettingsTab$, ssoTab$]).pipe(mergeAll(), toArray());
|
|
2666
2666
|
}
|
|
2667
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
2668
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
2667
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthConfigurationTabsFactory, deps: [{ token: i1$5.Router }, { token: SsoConfigurationService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2668
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthConfigurationTabsFactory }); }
|
|
2669
2669
|
}
|
|
2670
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
2670
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthConfigurationTabsFactory, decorators: [{
|
|
2671
2671
|
type: Injectable
|
|
2672
2672
|
}], ctorParameters: () => [{ type: i1$5.Router }, { type: SsoConfigurationService }] });
|
|
2673
2673
|
|
|
@@ -2693,10 +2693,10 @@ class AuthConfigurationNavigationFactory {
|
|
|
2693
2693
|
}
|
|
2694
2694
|
return this.navs;
|
|
2695
2695
|
}
|
|
2696
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
2697
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
2696
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthConfigurationNavigationFactory, deps: [{ token: i2.Permissions }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2697
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthConfigurationNavigationFactory }); }
|
|
2698
2698
|
}
|
|
2699
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
2699
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthConfigurationNavigationFactory, decorators: [{
|
|
2700
2700
|
type: Injectable
|
|
2701
2701
|
}], ctorParameters: () => [{ type: i2.Permissions }] });
|
|
2702
2702
|
|
|
@@ -2713,9 +2713,9 @@ const MESSAGES_AUTH_CONFIGURATION = {
|
|
|
2713
2713
|
};
|
|
2714
2714
|
|
|
2715
2715
|
class AuthConfigurationModule {
|
|
2716
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
2717
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.
|
|
2718
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.
|
|
2716
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthConfigurationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
2717
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: AuthConfigurationModule, imports: [BasicSettingsModule, SsoConfigurationModule] }); }
|
|
2718
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthConfigurationModule, providers: [
|
|
2719
2719
|
AuthConfigurationGuard,
|
|
2720
2720
|
hookTab(AuthConfigurationTabsFactory),
|
|
2721
2721
|
hookNavigator(AuthConfigurationNavigationFactory),
|
|
@@ -2727,7 +2727,7 @@ class AuthConfigurationModule {
|
|
|
2727
2727
|
})
|
|
2728
2728
|
], imports: [BasicSettingsModule, SsoConfigurationModule] }); }
|
|
2729
2729
|
}
|
|
2730
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
2730
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthConfigurationModule, decorators: [{
|
|
2731
2731
|
type: NgModule,
|
|
2732
2732
|
args: [{
|
|
2733
2733
|
imports: [BasicSettingsModule, SsoConfigurationModule],
|