@c8y/ngx-components 1017.0.378 → 1017.0.382
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/auth-configuration/basic-settings/basic-auth-settings.component.d.ts +3 -0
- package/core/date-time-picker/close-date-picker.directive.d.ts +14 -0
- package/core/date-time-picker/date-time-picker.component.d.ts +7 -2
- package/core/date-time-picker/date-time-picker.module.d.ts +8 -7
- package/esm2020/auth-configuration/basic-settings/basic-auth-settings.component.mjs +10 -7
- package/esm2020/core/date-time-picker/close-date-picker.directive.mjs +36 -0
- package/esm2020/core/date-time-picker/date-time-picker.component.mjs +28 -8
- package/esm2020/core/date-time-picker/date-time-picker.module.mjs +4 -3
- package/fesm2015/c8y-ngx-components-auth-configuration.mjs +54 -51
- package/fesm2015/c8y-ngx-components-auth-configuration.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components.mjs +57 -8
- package/fesm2015/c8y-ngx-components.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-auth-configuration.mjs +54 -51
- package/fesm2020/c8y-ngx-components-auth-configuration.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components.mjs +57 -8
- package/fesm2020/c8y-ngx-components.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Component, Input, Injectable, EventEmitter, NgModule, Output } from '@angular/core';
|
|
3
|
-
import * as i1 from '@c8y/ngx-components';
|
|
3
|
+
import * as i1$1 from '@c8y/ngx-components';
|
|
4
4
|
import { gettext, CoreModule, hookRoute, memoize, Status, NavigatorNode, hookTab, hookNavigator } from '@c8y/ngx-components';
|
|
5
|
-
import * as i1$
|
|
5
|
+
import * as i1$2 from '@c8y/client';
|
|
6
6
|
import { TenantLoginOptionType, UserManagementSource, GrantType, TfaStrategy } from '@c8y/client';
|
|
7
|
-
import * as
|
|
7
|
+
import * as i1 from '@angular/forms';
|
|
8
8
|
import { ControlContainer, NgForm } from '@angular/forms';
|
|
9
9
|
import * as i3 from '@angular/common';
|
|
10
10
|
import { DatePipe } from '@angular/common';
|
|
@@ -18,7 +18,7 @@ import * as i2 from '@ngx-translate/core';
|
|
|
18
18
|
import { TooltipModule } from 'ngx-bootstrap/tooltip';
|
|
19
19
|
import * as i5 from 'ngx-bootstrap/datepicker';
|
|
20
20
|
import { BsDatepickerModule } from 'ngx-bootstrap/datepicker';
|
|
21
|
-
import * as i1$
|
|
21
|
+
import * as i1$3 from '@angular/router';
|
|
22
22
|
|
|
23
23
|
class UserAgent {
|
|
24
24
|
constructor(value) {
|
|
@@ -42,7 +42,8 @@ function isBasic(tenantLoginOption) {
|
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
class BasicAuthSettingsComponent {
|
|
45
|
-
constructor() {
|
|
45
|
+
constructor(controlContainer) {
|
|
46
|
+
this.controlContainer = controlContainer;
|
|
46
47
|
this.preferredLoginOptionType = TenantLoginOptionType.BASIC;
|
|
47
48
|
this.tenantLoginOptionTypeEnum = TenantLoginOptionType;
|
|
48
49
|
}
|
|
@@ -68,9 +69,11 @@ class BasicAuthSettingsComponent {
|
|
|
68
69
|
}
|
|
69
70
|
forbiddenUserAgentsRemove(id) {
|
|
70
71
|
this.authenticationRestrictions.forbiddenUserAgents = this.remove(this.authenticationRestrictions.forbiddenUserAgents, id);
|
|
72
|
+
this.controlContainer.control.markAsDirty();
|
|
71
73
|
}
|
|
72
74
|
trustedUserAgentsRemove(id) {
|
|
73
75
|
this.authenticationRestrictions.trustedUserAgents = this.remove(this.authenticationRestrictions.trustedUserAgents, id);
|
|
76
|
+
this.controlContainer.control.markAsDirty();
|
|
74
77
|
}
|
|
75
78
|
get authenticationRestrictions() {
|
|
76
79
|
return this.authConfiguration.loginOptions.find(isBasic).authenticationRestrictions;
|
|
@@ -86,12 +89,12 @@ class BasicAuthSettingsComponent {
|
|
|
86
89
|
return newArray;
|
|
87
90
|
}
|
|
88
91
|
}
|
|
89
|
-
BasicAuthSettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: BasicAuthSettingsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
90
|
-
BasicAuthSettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: BasicAuthSettingsComponent, 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 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 [(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: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type:
|
|
92
|
+
BasicAuthSettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: BasicAuthSettingsComponent, deps: [{ token: i1.ControlContainer }], target: i0.ɵɵFactoryTarget.Component });
|
|
93
|
+
BasicAuthSettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: BasicAuthSettingsComponent, 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 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 [(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: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: "component", type: i1$1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "pipe", type: i1$1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
|
|
91
94
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: BasicAuthSettingsComponent, decorators: [{
|
|
92
95
|
type: Component,
|
|
93
96
|
args: [{ selector: 'c8y-basic-auth-settings', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], 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 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 [(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" }]
|
|
94
|
-
}], propDecorators: { authConfiguration: [{
|
|
97
|
+
}], ctorParameters: function () { return [{ type: i1.ControlContainer }]; }, propDecorators: { authConfiguration: [{
|
|
95
98
|
type: Input
|
|
96
99
|
}] } });
|
|
97
100
|
|
|
@@ -103,11 +106,11 @@ class AuthConfigurationGuard {
|
|
|
103
106
|
return this.permissions.hasAnyRole(['ROLE_TENANT_ADMIN', 'ROLE_TENANT_MANAGEMENT_ADMIN']);
|
|
104
107
|
}
|
|
105
108
|
}
|
|
106
|
-
AuthConfigurationGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AuthConfigurationGuard, deps: [{ token: i1.Permissions }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
109
|
+
AuthConfigurationGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AuthConfigurationGuard, deps: [{ token: i1$1.Permissions }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
107
110
|
AuthConfigurationGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AuthConfigurationGuard });
|
|
108
111
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AuthConfigurationGuard, decorators: [{
|
|
109
112
|
type: Injectable
|
|
110
|
-
}], ctorParameters: function () { return [{ type: i1.Permissions }]; } });
|
|
113
|
+
}], ctorParameters: function () { return [{ type: i1$1.Permissions }]; } });
|
|
111
114
|
|
|
112
115
|
class TypedOption {
|
|
113
116
|
constructor(category, key, type, defaultValue, value) {
|
|
@@ -387,11 +390,11 @@ class AuthConfigurationService {
|
|
|
387
390
|
};
|
|
388
391
|
}
|
|
389
392
|
}
|
|
390
|
-
AuthConfigurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AuthConfigurationService, deps: [{ token: i1$
|
|
393
|
+
AuthConfigurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AuthConfigurationService, deps: [{ token: i1$2.TenantLoginOptionsService }, { token: i1$2.TenantOptionsService }, { token: i1$2.SystemOptionsService }, { token: i1$2.ApplicationService }, { token: i1$1.TenantUiService }, { token: TenantLoginOptionMapper }, { token: i1$2.TenantService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
391
394
|
AuthConfigurationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AuthConfigurationService });
|
|
392
395
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AuthConfigurationService, decorators: [{
|
|
393
396
|
type: Injectable
|
|
394
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
397
|
+
}], ctorParameters: function () { return [{ type: i1$2.TenantLoginOptionsService }, { type: i1$2.TenantOptionsService }, { type: i1$2.SystemOptionsService }, { type: i1$2.ApplicationService }, { type: i1$1.TenantUiService }, { type: TenantLoginOptionMapper }, { type: i1$2.TenantService }]; } });
|
|
395
398
|
|
|
396
399
|
class SessionConfigurationComponent {
|
|
397
400
|
constructor(tenantUiService, translateService) {
|
|
@@ -491,12 +494,12 @@ class SessionConfigurationComponent {
|
|
|
491
494
|
return isFinite(milliseconds) ? Math.ceil(milliseconds / 1000) : null;
|
|
492
495
|
}
|
|
493
496
|
}
|
|
494
|
-
SessionConfigurationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SessionConfigurationComponent, deps: [{ token: i1.TenantUiService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
495
|
-
SessionConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SessionConfigurationComponent, 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 popover=\"{{ USER_AGENT_VALIDATION_REQUIRED_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\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: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.MinValidationDirective, selector: "[min]", inputs: ["min"] }, { kind: "directive", type: i1.MaxValidationDirective, selector: "[max]", inputs: ["max"] }, { kind: "directive", type:
|
|
497
|
+
SessionConfigurationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SessionConfigurationComponent, deps: [{ token: i1$1.TenantUiService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
498
|
+
SessionConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SessionConfigurationComponent, 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 popover=\"{{ USER_AGENT_VALIDATION_REQUIRED_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\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: i1$1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.MinValidationDirective, selector: "[min]", inputs: ["min"] }, { kind: "directive", type: i1$1.MaxValidationDirective, selector: "[max]", inputs: ["max"] }, { 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: "component", type: i1$1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i1$1.MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "component", type: i1$1.MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults"] }, { kind: "directive", type: i1$1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4.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: i1$1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
|
|
496
499
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SessionConfigurationComponent, decorators: [{
|
|
497
500
|
type: Component,
|
|
498
501
|
args: [{ selector: 'c8y-session-configuration', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], 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 popover=\"{{ USER_AGENT_VALIDATION_REQUIRED_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\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" }]
|
|
499
|
-
}], ctorParameters: function () { return [{ type: i1.TenantUiService }, { type: i2.TranslateService }]; }, propDecorators: { authConfiguration: [{
|
|
502
|
+
}], ctorParameters: function () { return [{ type: i1$1.TenantUiService }, { type: i2.TranslateService }]; }, propDecorators: { authConfiguration: [{
|
|
500
503
|
type: Input
|
|
501
504
|
}] } });
|
|
502
505
|
|
|
@@ -543,12 +546,12 @@ class LoginSettingsComponent {
|
|
|
543
546
|
}
|
|
544
547
|
}
|
|
545
548
|
}
|
|
546
|
-
LoginSettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: LoginSettingsComponent, deps: [{ token: i1.TenantUiService }], target: i0.ɵɵFactoryTarget.Component });
|
|
547
|
-
LoginSettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: LoginSettingsComponent, 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 title=\"{{ 'Preferred login mode' | translate }}\">\n {{ 'Preferred login mode' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{ PREFERRED_LOGIN_MODE_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\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 popover=\"{{ ENFORCED_BY_PLATFORM_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\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 popover=\"{{ ENFORCED_BY_PLATFORM_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n *ngIf=\"systemPasswordEnforceStrength\"\n ></button>\n </label>\n <div>\n <label\n title=\"{{ 'Enforce that all passwords are strong (green)' | translate }}\"\n class=\"c8y-switch\"\n >\n <input\n type=\"checkbox\"\n name=\"passwordEnforceStrength\"\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>\n</div>\n", dependencies: [{ kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.MinValidationDirective, selector: "[min]", inputs: ["min"] }, { kind: "directive", type: i1.MaxValidationDirective, selector: "[max]", inputs: ["max"] }, { kind: "directive", type:
|
|
549
|
+
LoginSettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: LoginSettingsComponent, deps: [{ token: i1$1.TenantUiService }], target: i0.ɵɵFactoryTarget.Component });
|
|
550
|
+
LoginSettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: LoginSettingsComponent, 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 title=\"{{ 'Preferred login mode' | translate }}\">\n {{ 'Preferred login mode' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{ PREFERRED_LOGIN_MODE_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\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 popover=\"{{ ENFORCED_BY_PLATFORM_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\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 popover=\"{{ ENFORCED_BY_PLATFORM_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n *ngIf=\"systemPasswordEnforceStrength\"\n ></button>\n </label>\n <div>\n <label\n title=\"{{ 'Enforce that all passwords are strong (green)' | translate }}\"\n class=\"c8y-switch\"\n >\n <input\n type=\"checkbox\"\n name=\"passwordEnforceStrength\"\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>\n</div>\n", dependencies: [{ kind: "directive", type: i1$1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.MinValidationDirective, selector: "[min]", inputs: ["min"] }, { kind: "directive", type: i1$1.MaxValidationDirective, selector: "[max]", inputs: ["max"] }, { 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: "component", type: i1$1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i1$1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4.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: i1$1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
|
|
548
551
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: LoginSettingsComponent, decorators: [{
|
|
549
552
|
type: Component,
|
|
550
553
|
args: [{ selector: 'c8y-login-settings', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], 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 title=\"{{ 'Preferred login mode' | translate }}\">\n {{ 'Preferred login mode' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{ PREFERRED_LOGIN_MODE_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\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 popover=\"{{ ENFORCED_BY_PLATFORM_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\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 popover=\"{{ ENFORCED_BY_PLATFORM_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n *ngIf=\"systemPasswordEnforceStrength\"\n ></button>\n </label>\n <div>\n <label\n title=\"{{ 'Enforce that all passwords are strong (green)' | translate }}\"\n class=\"c8y-switch\"\n >\n <input\n type=\"checkbox\"\n name=\"passwordEnforceStrength\"\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>\n</div>\n" }]
|
|
551
|
-
}], ctorParameters: function () { return [{ type: i1.TenantUiService }]; }, propDecorators: { authConfiguration: [{
|
|
554
|
+
}], ctorParameters: function () { return [{ type: i1$1.TenantUiService }]; }, propDecorators: { authConfiguration: [{
|
|
552
555
|
type: Input
|
|
553
556
|
}] } });
|
|
554
557
|
|
|
@@ -650,7 +653,7 @@ class TfaSettingsComponent {
|
|
|
650
653
|
}
|
|
651
654
|
}
|
|
652
655
|
TfaSettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: TfaSettingsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
653
|
-
TfaSettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: TfaSettingsComponent, 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 type=\"button\"\n class=\"btn-help btn-help--sm\"\n popover=\"{{ TFA_IS_ENABLED_BY_SYSTEM_POPOVER | translate }}\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n placement=\"bottom\"\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 type=\"button\"\n class=\"btn-help btn-help--sm\"\n popover=\"{{ TFA_IS_ENFORCED_BY_SYSTEM_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\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 type=\"button\"\n class=\"btn-help btn-help--sm\"\n popover=\"{{ TFA_IS_ENABLED_BY_ENFORCE_FOR_GROUP_POPOVER | translate }}\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n placement=\"bottom\"\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 type=\"button\"\n class=\"btn-help btn-help--sm\"\n popover=\"{{ SMS_APP_NOT_SUBSCRIBED_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n *ngIf=\"!tfaBySmsCanBeSet\"\n ></button>\n <button\n type=\"button\"\n class=\"btn-help btn-help--sm\"\n popover=\"{{ TOTP_REQUIRES_OAUTH_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\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 Google Authenticator (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 type=\"button\"\n class=\"btn-help btn-help--sm\"\n popover=\"{{ TFA_IS_ENFORCED_BY_SYSTEM_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n *ngIf=\"!systemTfaTenantScopeSettingEnabled\"\n ></button>\n <button\n type=\"button\"\n class=\"btn-help btn-help--sm\"\n popover=\"{{ TOKEN_VALIDITY_DETERMINED_BY_JWT_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\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 type=\"button\"\n class=\"btn-help btn-help--sm\"\n popover=\"{{ TFA_IS_ENFORCED_BY_SYSTEM_POPOVER | translate }}\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n placement=\"right\"\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: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.MinValidationDirective, selector: "[min]", inputs: ["min"] }, { kind: "directive", type: i1.MaxValidationDirective, selector: "[max]", inputs: ["max"] }, { kind: "directive", type: i3$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3$1.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: i3$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3$1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i3$1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4.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: i1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
|
|
656
|
+
TfaSettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: TfaSettingsComponent, 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 type=\"button\"\n class=\"btn-help btn-help--sm\"\n popover=\"{{ TFA_IS_ENABLED_BY_SYSTEM_POPOVER | translate }}\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n placement=\"bottom\"\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 type=\"button\"\n class=\"btn-help btn-help--sm\"\n popover=\"{{ TFA_IS_ENFORCED_BY_SYSTEM_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\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 type=\"button\"\n class=\"btn-help btn-help--sm\"\n popover=\"{{ TFA_IS_ENABLED_BY_ENFORCE_FOR_GROUP_POPOVER | translate }}\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n placement=\"bottom\"\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 type=\"button\"\n class=\"btn-help btn-help--sm\"\n popover=\"{{ SMS_APP_NOT_SUBSCRIBED_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n *ngIf=\"!tfaBySmsCanBeSet\"\n ></button>\n <button\n type=\"button\"\n class=\"btn-help btn-help--sm\"\n popover=\"{{ TOTP_REQUIRES_OAUTH_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\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 Google Authenticator (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 type=\"button\"\n class=\"btn-help btn-help--sm\"\n popover=\"{{ TFA_IS_ENFORCED_BY_SYSTEM_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n *ngIf=\"!systemTfaTenantScopeSettingEnabled\"\n ></button>\n <button\n type=\"button\"\n class=\"btn-help btn-help--sm\"\n popover=\"{{ TOKEN_VALIDITY_DETERMINED_BY_JWT_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\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 type=\"button\"\n class=\"btn-help btn-help--sm\"\n popover=\"{{ TFA_IS_ENFORCED_BY_SYSTEM_POPOVER | translate }}\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n placement=\"right\"\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: i1$1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$1.MinValidationDirective, selector: "[min]", inputs: ["min"] }, { kind: "directive", type: i1$1.MaxValidationDirective, selector: "[max]", inputs: ["max"] }, { 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: "component", type: i1$1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i1$1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4.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: i1$1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
|
|
654
657
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: TfaSettingsComponent, decorators: [{
|
|
655
658
|
type: Component,
|
|
656
659
|
args: [{ selector: 'c8y-auth-tfa', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], 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 type=\"button\"\n class=\"btn-help btn-help--sm\"\n popover=\"{{ TFA_IS_ENABLED_BY_SYSTEM_POPOVER | translate }}\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n placement=\"bottom\"\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 type=\"button\"\n class=\"btn-help btn-help--sm\"\n popover=\"{{ TFA_IS_ENFORCED_BY_SYSTEM_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\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 type=\"button\"\n class=\"btn-help btn-help--sm\"\n popover=\"{{ TFA_IS_ENABLED_BY_ENFORCE_FOR_GROUP_POPOVER | translate }}\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n placement=\"bottom\"\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 type=\"button\"\n class=\"btn-help btn-help--sm\"\n popover=\"{{ SMS_APP_NOT_SUBSCRIBED_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n *ngIf=\"!tfaBySmsCanBeSet\"\n ></button>\n <button\n type=\"button\"\n class=\"btn-help btn-help--sm\"\n popover=\"{{ TOTP_REQUIRES_OAUTH_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\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 Google Authenticator (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 type=\"button\"\n class=\"btn-help btn-help--sm\"\n popover=\"{{ TFA_IS_ENFORCED_BY_SYSTEM_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n *ngIf=\"!systemTfaTenantScopeSettingEnabled\"\n ></button>\n <button\n type=\"button\"\n class=\"btn-help btn-help--sm\"\n popover=\"{{ TOKEN_VALIDITY_DETERMINED_BY_JWT_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\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 type=\"button\"\n class=\"btn-help btn-help--sm\"\n popover=\"{{ TFA_IS_ENFORCED_BY_SYSTEM_POPOVER | translate }}\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n placement=\"right\"\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" }]
|
|
@@ -697,12 +700,12 @@ class AuthConfigurationComponent {
|
|
|
697
700
|
});
|
|
698
701
|
}
|
|
699
702
|
}
|
|
700
|
-
AuthConfigurationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AuthConfigurationComponent, deps: [{ token: AuthConfigurationService }, { token: i1$
|
|
701
|
-
AuthConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: AuthConfigurationComponent, selector: "c8y-auth-configuration", ngImport: i0, template: "<c8y-title>{{ 'Authentication' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [label]=\"'Settings' | translate\"\n [icon]=\"'cog'\"\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 title=\"{{ 'Reload' | translate }}\" class=\"btn btn-link\" (click)=\"loadAuthConfig()\">\n <i c8yIcon=\"refresh\" [ngClass]=\"{ 'icon-spin': reloading$ | async }\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/users-guide/administration/#authentication\"></c8y-help>\n\n<form class=\"card card--fullpage\" #authConfigurationForm=\"ngForm\" novalidate>\n <div class=\"card-header separator\">\n <div class=\"card-title\">\n {{ 'Authentication' | translate }}\n </div>\n </div>\n <div class=\"inner-scroll\" *ngIf=\"authConfiguration\">\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 title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary\"\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: i1.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId"] }, { kind: "component", type: i1.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i1.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type:
|
|
703
|
+
AuthConfigurationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AuthConfigurationComponent, deps: [{ token: AuthConfigurationService }, { token: i1$2.TenantLoginOptionsService }, { token: i1$1.ModalService }, { token: i1$1.LoginService }, { token: i1$1.AlertService }], target: i0.ɵɵFactoryTarget.Component });
|
|
704
|
+
AuthConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: AuthConfigurationComponent, selector: "c8y-auth-configuration", ngImport: i0, template: "<c8y-title>{{ 'Authentication' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [label]=\"'Settings' | translate\"\n [icon]=\"'cog'\"\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 title=\"{{ 'Reload' | translate }}\" class=\"btn btn-link\" (click)=\"loadAuthConfig()\">\n <i c8yIcon=\"refresh\" [ngClass]=\"{ 'icon-spin': reloading$ | async }\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/users-guide/administration/#authentication\"></c8y-help>\n\n<form class=\"card card--fullpage\" #authConfigurationForm=\"ngForm\" novalidate>\n <div class=\"card-header separator\">\n <div class=\"card-title\">\n {{ 'Authentication' | translate }}\n </div>\n </div>\n <div class=\"inner-scroll\" *ngIf=\"authConfiguration\">\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 title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary\"\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: i1$1.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId"] }, { kind: "component", type: i1$1.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i1$1.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "directive", type: i1$1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1$1.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { 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: "component", type: i1$1.HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "component", type: SessionConfigurationComponent, selector: "c8y-session-configuration", inputs: ["authConfiguration"] }, { kind: "component", type: LoginSettingsComponent, selector: "c8y-login-settings", inputs: ["authConfiguration"] }, { kind: "component", type: BasicAuthSettingsComponent, selector: "c8y-basic-auth-settings", inputs: ["authConfiguration"] }, { kind: "component", type: TfaSettingsComponent, selector: "c8y-auth-tfa", inputs: ["authConfiguration"] }, { kind: "pipe", type: i1$1.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] });
|
|
702
705
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AuthConfigurationComponent, decorators: [{
|
|
703
706
|
type: Component,
|
|
704
707
|
args: [{ selector: 'c8y-auth-configuration', template: "<c8y-title>{{ 'Authentication' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [label]=\"'Settings' | translate\"\n [icon]=\"'cog'\"\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 title=\"{{ 'Reload' | translate }}\" class=\"btn btn-link\" (click)=\"loadAuthConfig()\">\n <i c8yIcon=\"refresh\" [ngClass]=\"{ 'icon-spin': reloading$ | async }\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/users-guide/administration/#authentication\"></c8y-help>\n\n<form class=\"card card--fullpage\" #authConfigurationForm=\"ngForm\" novalidate>\n <div class=\"card-header separator\">\n <div class=\"card-title\">\n {{ 'Authentication' | translate }}\n </div>\n </div>\n <div class=\"inner-scroll\" *ngIf=\"authConfiguration\">\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 title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary\"\n (click)=\"save()\"\n [disabled]=\"!authConfigurationForm.form.valid || authConfigurationForm.form.pristine\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</form>\n" }]
|
|
705
|
-
}], ctorParameters: function () { return [{ type: AuthConfigurationService }, { type: i1$
|
|
708
|
+
}], ctorParameters: function () { return [{ type: AuthConfigurationService }, { type: i1$2.TenantLoginOptionsService }, { type: i1$1.ModalService }, { type: i1$1.LoginService }, { type: i1$1.AlertService }]; } });
|
|
706
709
|
|
|
707
710
|
class BasicSettingsModule {
|
|
708
711
|
}
|
|
@@ -860,14 +863,14 @@ class SsoConfigurationService {
|
|
|
860
863
|
return this.loginOptionsService.save(ssoConfiguration);
|
|
861
864
|
}
|
|
862
865
|
}
|
|
863
|
-
SsoConfigurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SsoConfigurationService, deps: [{ token: i1$
|
|
866
|
+
SsoConfigurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SsoConfigurationService, deps: [{ token: i1$2.TenantLoginOptionsService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
864
867
|
SsoConfigurationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SsoConfigurationService, providedIn: 'root' });
|
|
865
868
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SsoConfigurationService, decorators: [{
|
|
866
869
|
type: Injectable,
|
|
867
870
|
args: [{
|
|
868
871
|
providedIn: 'root'
|
|
869
872
|
}]
|
|
870
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
873
|
+
}], ctorParameters: function () { return [{ type: i1$2.TenantLoginOptionsService }]; } });
|
|
871
874
|
|
|
872
875
|
class SsoConfigurationMapper {
|
|
873
876
|
}
|
|
@@ -1170,8 +1173,8 @@ class BasicConfigurationComponent {
|
|
|
1170
1173
|
});
|
|
1171
1174
|
}
|
|
1172
1175
|
}
|
|
1173
|
-
BasicConfigurationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: BasicConfigurationComponent, deps: [{ token: i1$
|
|
1174
|
-
BasicConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: BasicConfigurationComponent, selector: "c8y-basic-configuration", inputs: { templateModel: "templateModel" }, ngImport: i0, template: "<div class=\"col-md-12 p-t-24\">\n <div class=\"row m-l-8 m-r-8\">\n <div class=\"col-xs-12 col-sm-3 col-md-2\">\n <h4 class=\"text-right text-left-xs\" translate>Basic</h4>\n </div>\n\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9\" *ngIf=\"templateModel\">\n <div class=\"row\" *ngIf=\"shouldShow('keyCloakAddress')\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label for=\"keyCloakAddress\" class=\"control-label\" translate>Keycloak address</label>\n <input\n class=\"form-control\"\n type=\"url\"\n id=\"keyCloakAddress\"\n name=\"keyCloakAddress\"\n [(ngModel)]=\"templateModel.keyCloakAddress\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'https://example.de' }\"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n <div class=\"row\" *ngIf=\"shouldShow('aadAddress')\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label for=\"aadAddress\" class=\"control-label\" translate>Azure AD address</label>\n <input\n class=\"form-control\"\n type=\"url\"\n id=\"aadAddress\"\n name=\"aadAddress\"\n [(ngModel)]=\"templateModel.aadAddress\"\n [placeholder]=\"\n 'e.g. {{ example }}' | translate: { example: 'https://login.microsoftonline.de' }\n \"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\" *ngIf=\"shouldShow('tenant')\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label for=\"tenant\" class=\"control-label\" translate>Tenant</label>\n <input\n class=\"form-control\"\n id=\"tenant\"\n name=\"tenant\"\n [(ngModel)]=\"templateModel.tenant\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'c8y.onmicrosoft.de' }\"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\" *ngIf=\"shouldShow('applicationId')\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label for=\"applicationId\" class=\"control-label\" translate>Application ID</label>\n <input\n class=\"form-control\"\n required\n id=\"applicationId\"\n name=\"applicationId\"\n [(ngModel)]=\"templateModel.applicationId\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\" *ngIf=\"shouldShow('realmName')\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label for=\"realmName\" class=\"control-label\" translate>Realm name</label>\n <input\n class=\"form-control\"\n required\n id=\"realmName\"\n name=\"realmName\"\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 for=\"redirectToPlatform\" class=\"control-label\" translate>Redirect URL</label>\n <input\n type=\"url\"\n class=\"form-control\"\n id=\"redirectToPlatform\"\n name=\"redirectToPlatform\"\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 required\n />\n </c8y-form-group>\n\n <div\n *ngIf=\"\n redirectToPlatformWarningParams &&\n templateModel.redirectToPlatform != redirectToPlatformWarningParams.defaultRedirectUrl\n \"\n >\n <div\n class=\"alert alert-warning max-width-100 m-b-32\"\n ngNonBindable\n translate\n [translateParams]=\"redirectToPlatformWarningParams\"\n >\n For correct application behavior you can use only {{ defaultRedirectUrl }} or\n {{ host }} values, it is advised to use the first one.\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-sm-6\" *ngIf=\"shouldShow('clientSecret')\">\n <c8y-form-group>\n <label for=\"clientSecret\" class=\"control-label\" translate>Client secret</label>\n <input\n class=\"form-control\"\n required\n id=\"clientSecret\"\n name=\"clientSecret\"\n [(ngModel)]=\"templateModel.clientSecret\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-sm-6\" *ngIf=\"shouldShow('clientId')\">\n <c8y-form-group>\n <label for=\"clientId\" class=\"control-label\" translate>Client ID</label>\n <input\n class=\"form-control\"\n id=\"clientId\"\n name=\"clientId\"\n [(ngModel)]=\"templateModel.clientId\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: '254234981c-78a8-4588\u2026' }\"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\" *ngIf=\"shouldShow('issuer')\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label for=\"issuer\" class=\"control-label\" translate>Token issuer</label>\n <input\n class=\"form-control\"\n id=\"issuer\"\n name=\"issuer\"\n [(ngModel)]=\"templateModel.issuer\"\n [placeholder]=\"\n 'e.g. {{ example }}'\n | translate: { example: 'https://login.microsoftonline.de/237652-3727' }\n \"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\" *ngIf=\"shouldShow('scopeId')\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label for=\"scopeId\" class=\"control-label\" translate>Scope ID</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 required\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-sm-6\" *ngIf=\"shouldShow('buttonName')\">\n <c8y-form-group>\n <label for=\"buttonName\" class=\"control-label\" translate>Button name</label>\n <input\n class=\"form-control\"\n id=\"buttonName\"\n name=\"buttonName\"\n [(ngModel)]=\"templateModel.buttonName\"\n [placeholder]=\"'e.g. Log in with Azure AD' | translate\"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-sm-6\" *ngIf=\"shouldShow('providerName')\">\n <c8y-form-group>\n <label for=\"providerName\" class=\"control-label\" translate>Provider name</label>\n <input\n class=\"form-control\"\n id=\"providerName\"\n name=\"providerName\"\n [(ngModel)]=\"templateModel.providerName\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'Azure AD' }\"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\" *ngIf=\"shouldShow('audience')\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label for=\"audience\" class=\"control-label\" translate>Audience</label>\n <input\n class=\"form-control\"\n id=\"audience\"\n name=\"audience\"\n [(ngModel)]=\"templateModel.audience\"\n [placeholder]=\"\n 'e.g. {{ example }}' | translate: { example: 'https://test.example.com' }\n \"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\" *ngIf=\"shouldShow('visibleOnLoginPage')\">\n <div class=\"col-sm-6\">\n <label\n for=\"visibleOnLoginPage\"\n title=\"{{ 'Visible on login page' | translate }}\"\n class=\"c8y-switch\"\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</div>\n", dependencies: [{ kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$1.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: i3$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
|
|
1176
|
+
BasicConfigurationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: BasicConfigurationComponent, deps: [{ token: i1$2.TenantService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1177
|
+
BasicConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: BasicConfigurationComponent, selector: "c8y-basic-configuration", inputs: { templateModel: "templateModel" }, ngImport: i0, template: "<div class=\"col-md-12 p-t-24\">\n <div class=\"row m-l-8 m-r-8\">\n <div class=\"col-xs-12 col-sm-3 col-md-2\">\n <h4 class=\"text-right text-left-xs\" translate>Basic</h4>\n </div>\n\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9\" *ngIf=\"templateModel\">\n <div class=\"row\" *ngIf=\"shouldShow('keyCloakAddress')\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label for=\"keyCloakAddress\" class=\"control-label\" translate>Keycloak address</label>\n <input\n class=\"form-control\"\n type=\"url\"\n id=\"keyCloakAddress\"\n name=\"keyCloakAddress\"\n [(ngModel)]=\"templateModel.keyCloakAddress\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'https://example.de' }\"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n <div class=\"row\" *ngIf=\"shouldShow('aadAddress')\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label for=\"aadAddress\" class=\"control-label\" translate>Azure AD address</label>\n <input\n class=\"form-control\"\n type=\"url\"\n id=\"aadAddress\"\n name=\"aadAddress\"\n [(ngModel)]=\"templateModel.aadAddress\"\n [placeholder]=\"\n 'e.g. {{ example }}' | translate: { example: 'https://login.microsoftonline.de' }\n \"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\" *ngIf=\"shouldShow('tenant')\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label for=\"tenant\" class=\"control-label\" translate>Tenant</label>\n <input\n class=\"form-control\"\n id=\"tenant\"\n name=\"tenant\"\n [(ngModel)]=\"templateModel.tenant\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'c8y.onmicrosoft.de' }\"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\" *ngIf=\"shouldShow('applicationId')\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label for=\"applicationId\" class=\"control-label\" translate>Application ID</label>\n <input\n class=\"form-control\"\n required\n id=\"applicationId\"\n name=\"applicationId\"\n [(ngModel)]=\"templateModel.applicationId\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\" *ngIf=\"shouldShow('realmName')\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label for=\"realmName\" class=\"control-label\" translate>Realm name</label>\n <input\n class=\"form-control\"\n required\n id=\"realmName\"\n name=\"realmName\"\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 for=\"redirectToPlatform\" class=\"control-label\" translate>Redirect URL</label>\n <input\n type=\"url\"\n class=\"form-control\"\n id=\"redirectToPlatform\"\n name=\"redirectToPlatform\"\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 required\n />\n </c8y-form-group>\n\n <div\n *ngIf=\"\n redirectToPlatformWarningParams &&\n templateModel.redirectToPlatform != redirectToPlatformWarningParams.defaultRedirectUrl\n \"\n >\n <div\n class=\"alert alert-warning max-width-100 m-b-32\"\n ngNonBindable\n translate\n [translateParams]=\"redirectToPlatformWarningParams\"\n >\n For correct application behavior you can use only {{ defaultRedirectUrl }} or\n {{ host }} values, it is advised to use the first one.\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-sm-6\" *ngIf=\"shouldShow('clientSecret')\">\n <c8y-form-group>\n <label for=\"clientSecret\" class=\"control-label\" translate>Client secret</label>\n <input\n class=\"form-control\"\n required\n id=\"clientSecret\"\n name=\"clientSecret\"\n [(ngModel)]=\"templateModel.clientSecret\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-sm-6\" *ngIf=\"shouldShow('clientId')\">\n <c8y-form-group>\n <label for=\"clientId\" class=\"control-label\" translate>Client ID</label>\n <input\n class=\"form-control\"\n id=\"clientId\"\n name=\"clientId\"\n [(ngModel)]=\"templateModel.clientId\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: '254234981c-78a8-4588\u2026' }\"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\" *ngIf=\"shouldShow('issuer')\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label for=\"issuer\" class=\"control-label\" translate>Token issuer</label>\n <input\n class=\"form-control\"\n id=\"issuer\"\n name=\"issuer\"\n [(ngModel)]=\"templateModel.issuer\"\n [placeholder]=\"\n 'e.g. {{ example }}'\n | translate: { example: 'https://login.microsoftonline.de/237652-3727' }\n \"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\" *ngIf=\"shouldShow('scopeId')\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label for=\"scopeId\" class=\"control-label\" translate>Scope ID</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 required\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-sm-6\" *ngIf=\"shouldShow('buttonName')\">\n <c8y-form-group>\n <label for=\"buttonName\" class=\"control-label\" translate>Button name</label>\n <input\n class=\"form-control\"\n id=\"buttonName\"\n name=\"buttonName\"\n [(ngModel)]=\"templateModel.buttonName\"\n [placeholder]=\"'e.g. Log in with Azure AD' | translate\"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-sm-6\" *ngIf=\"shouldShow('providerName')\">\n <c8y-form-group>\n <label for=\"providerName\" class=\"control-label\" translate>Provider name</label>\n <input\n class=\"form-control\"\n id=\"providerName\"\n name=\"providerName\"\n [(ngModel)]=\"templateModel.providerName\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'Azure AD' }\"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\" *ngIf=\"shouldShow('audience')\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label for=\"audience\" class=\"control-label\" translate>Audience</label>\n <input\n class=\"form-control\"\n id=\"audience\"\n name=\"audience\"\n [(ngModel)]=\"templateModel.audience\"\n [placeholder]=\"\n 'e.g. {{ example }}' | translate: { example: 'https://test.example.com' }\n \"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\" *ngIf=\"shouldShow('visibleOnLoginPage')\">\n <div class=\"col-sm-6\">\n <label\n for=\"visibleOnLoginPage\"\n title=\"{{ 'Visible on login page' | translate }}\"\n class=\"c8y-switch\"\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</div>\n", dependencies: [{ kind: "directive", type: i1$1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: "component", type: i1$1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i1$1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "pipe", type: i1$1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
|
|
1175
1178
|
__decorate([
|
|
1176
1179
|
memoize(),
|
|
1177
1180
|
__metadata("design:type", Function),
|
|
@@ -1181,7 +1184,7 @@ __decorate([
|
|
|
1181
1184
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: BasicConfigurationComponent, decorators: [{
|
|
1182
1185
|
type: Component,
|
|
1183
1186
|
args: [{ selector: 'c8y-basic-configuration', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div class=\"col-md-12 p-t-24\">\n <div class=\"row m-l-8 m-r-8\">\n <div class=\"col-xs-12 col-sm-3 col-md-2\">\n <h4 class=\"text-right text-left-xs\" translate>Basic</h4>\n </div>\n\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9\" *ngIf=\"templateModel\">\n <div class=\"row\" *ngIf=\"shouldShow('keyCloakAddress')\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label for=\"keyCloakAddress\" class=\"control-label\" translate>Keycloak address</label>\n <input\n class=\"form-control\"\n type=\"url\"\n id=\"keyCloakAddress\"\n name=\"keyCloakAddress\"\n [(ngModel)]=\"templateModel.keyCloakAddress\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'https://example.de' }\"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n <div class=\"row\" *ngIf=\"shouldShow('aadAddress')\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label for=\"aadAddress\" class=\"control-label\" translate>Azure AD address</label>\n <input\n class=\"form-control\"\n type=\"url\"\n id=\"aadAddress\"\n name=\"aadAddress\"\n [(ngModel)]=\"templateModel.aadAddress\"\n [placeholder]=\"\n 'e.g. {{ example }}' | translate: { example: 'https://login.microsoftonline.de' }\n \"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\" *ngIf=\"shouldShow('tenant')\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label for=\"tenant\" class=\"control-label\" translate>Tenant</label>\n <input\n class=\"form-control\"\n id=\"tenant\"\n name=\"tenant\"\n [(ngModel)]=\"templateModel.tenant\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'c8y.onmicrosoft.de' }\"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\" *ngIf=\"shouldShow('applicationId')\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label for=\"applicationId\" class=\"control-label\" translate>Application ID</label>\n <input\n class=\"form-control\"\n required\n id=\"applicationId\"\n name=\"applicationId\"\n [(ngModel)]=\"templateModel.applicationId\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\" *ngIf=\"shouldShow('realmName')\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label for=\"realmName\" class=\"control-label\" translate>Realm name</label>\n <input\n class=\"form-control\"\n required\n id=\"realmName\"\n name=\"realmName\"\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 for=\"redirectToPlatform\" class=\"control-label\" translate>Redirect URL</label>\n <input\n type=\"url\"\n class=\"form-control\"\n id=\"redirectToPlatform\"\n name=\"redirectToPlatform\"\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 required\n />\n </c8y-form-group>\n\n <div\n *ngIf=\"\n redirectToPlatformWarningParams &&\n templateModel.redirectToPlatform != redirectToPlatformWarningParams.defaultRedirectUrl\n \"\n >\n <div\n class=\"alert alert-warning max-width-100 m-b-32\"\n ngNonBindable\n translate\n [translateParams]=\"redirectToPlatformWarningParams\"\n >\n For correct application behavior you can use only {{ defaultRedirectUrl }} or\n {{ host }} values, it is advised to use the first one.\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-sm-6\" *ngIf=\"shouldShow('clientSecret')\">\n <c8y-form-group>\n <label for=\"clientSecret\" class=\"control-label\" translate>Client secret</label>\n <input\n class=\"form-control\"\n required\n id=\"clientSecret\"\n name=\"clientSecret\"\n [(ngModel)]=\"templateModel.clientSecret\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-sm-6\" *ngIf=\"shouldShow('clientId')\">\n <c8y-form-group>\n <label for=\"clientId\" class=\"control-label\" translate>Client ID</label>\n <input\n class=\"form-control\"\n id=\"clientId\"\n name=\"clientId\"\n [(ngModel)]=\"templateModel.clientId\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: '254234981c-78a8-4588\u2026' }\"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\" *ngIf=\"shouldShow('issuer')\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label for=\"issuer\" class=\"control-label\" translate>Token issuer</label>\n <input\n class=\"form-control\"\n id=\"issuer\"\n name=\"issuer\"\n [(ngModel)]=\"templateModel.issuer\"\n [placeholder]=\"\n 'e.g. {{ example }}'\n | translate: { example: 'https://login.microsoftonline.de/237652-3727' }\n \"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\" *ngIf=\"shouldShow('scopeId')\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label for=\"scopeId\" class=\"control-label\" translate>Scope ID</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 required\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-sm-6\" *ngIf=\"shouldShow('buttonName')\">\n <c8y-form-group>\n <label for=\"buttonName\" class=\"control-label\" translate>Button name</label>\n <input\n class=\"form-control\"\n id=\"buttonName\"\n name=\"buttonName\"\n [(ngModel)]=\"templateModel.buttonName\"\n [placeholder]=\"'e.g. Log in with Azure AD' | translate\"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-sm-6\" *ngIf=\"shouldShow('providerName')\">\n <c8y-form-group>\n <label for=\"providerName\" class=\"control-label\" translate>Provider name</label>\n <input\n class=\"form-control\"\n id=\"providerName\"\n name=\"providerName\"\n [(ngModel)]=\"templateModel.providerName\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'Azure AD' }\"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\" *ngIf=\"shouldShow('audience')\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label for=\"audience\" class=\"control-label\" translate>Audience</label>\n <input\n class=\"form-control\"\n id=\"audience\"\n name=\"audience\"\n [(ngModel)]=\"templateModel.audience\"\n [placeholder]=\"\n 'e.g. {{ example }}' | translate: { example: 'https://test.example.com' }\n \"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\" *ngIf=\"shouldShow('visibleOnLoginPage')\">\n <div class=\"col-sm-6\">\n <label\n for=\"visibleOnLoginPage\"\n title=\"{{ 'Visible on login page' | translate }}\"\n class=\"c8y-switch\"\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</div>\n" }]
|
|
1184
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
1187
|
+
}], ctorParameters: function () { return [{ type: i1$2.TenantService }]; }, propDecorators: { templateModel: [{
|
|
1185
1188
|
type: Input
|
|
1186
1189
|
}], shouldShow: [] } });
|
|
1187
1190
|
|
|
@@ -1207,8 +1210,8 @@ class RequestConfigurationComponent {
|
|
|
1207
1210
|
this.controlContainer.control.markAsDirty();
|
|
1208
1211
|
}
|
|
1209
1212
|
}
|
|
1210
|
-
RequestConfigurationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: RequestConfigurationComponent, deps: [{ token:
|
|
1211
|
-
RequestConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: RequestConfigurationComponent, selector: "c8y-request-configuration", inputs: { templateModel: "templateModel", requestName: "requestName", requestType: "requestType" }, ngImport: i0, template: "<fieldset ngModelGroup=\"{{ requestName }}\" id=\"{{ requestType }}\">\n <div class=\"col-md-12 p-t-24\">\n <div class=\"row m-l-8 m-r-8\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 m-b-xs-8\">\n <div class=\"h4 text-normal text-right text-left-xs\">\n {{ requestName }}\n </div>\n </div>\n\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9\" *ngIf=\"templateModel\">\n <div class=\"row\" *ngIf=\"shouldShow('authorizationRequest')\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label for=\"url\" class=\"control-label\" translate>URL</label>\n <input\n type=\"url\"\n class=\"form-control\"\n name=\"url\"\n [(ngModel)]=\"requestConfiguration.url\"\n [placeholder]=\"\n 'e.g. {{ example }}' | translate: { example: 'http://www.example.com/' }\n \"\n c8yDefaultValidation=\"httpUrl\"\n [required]=\"requestType !== 'logoutRequest'\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\">\n <div *ngIf=\"requestType !== 'authorizationRequest' && requestType !== 'logoutRequest'\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label [for]=\"requestType + 'body'\" class=\"control-label\" translate>Body</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 </div>\n </div>\n </div>\n\n <div *ngIf=\"requestType !== 'logoutRequest'\">\n <div class=\"legend form-block\" translate>Headers</div>\n <div\n class=\"tight-grid\"\n data-cy=\"refreshRequestHeaders\"\n *ngFor=\"let header of requestConfiguration.headers; index as headerIndex\"\n >\n <div class=\"col-md-5\">\n <c8y-form-group>\n <label [for]=\"requestType + 'headerKey' + headerIndex\" class=\"visible-sm visible-xs\" translate>\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 [for]=\"requestType + 'headerValue' + headerIndex\" class=\"visible-sm visible-xs\" translate>\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 title=\"{{ 'Remove' | translate }}\"\n class=\"btn btn-link hidden-xs hidden-sm\"\n (click)=\"removeCustomValue(requestConfiguration.headers, header)\"\n type=\"button\"\n >\n <i c8yIcon=\"minus-circle\" class=\"text-danger\"></i>\n </button>\n <button\n title=\"{{ 'Remove' | translate }}\"\n class=\"btn btn-danger btn-block btn-sm visible-xs visible-sm\"\n (click)=\"removeCustomValue(requestConfiguration.headers, header)\"\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>\n <button\n title=\"{{ 'Add header' | translate }}\"\n class=\"btn btn-default m-t-8 m-b-16\"\n (click)=\"addCustomValue(requestConfiguration.headers)\"\n >\n <i c8yIcon=\"plus-circle\" class=\"m-r-4\"></i>\n <span translate>Add header</span>\n </button>\n </div>\n\n <div class=\"legend form-block\" translate>Request parameters</div>\n <div\n class=\"tight-grid\"\n data-cy=\"requestParam\"\n *ngFor=\"let requestParam of requestConfiguration.requestParams; index as paramIndex\"\n >\n <div class=\"col-md-5\">\n <c8y-form-group>\n <label [for]=\"requestType + 'paramKey' + paramIndex\" class=\"visible-sm visible-xs\" translate>\n Key - {{paramIndex}}\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 [for]=\"requestType + 'paramValue' + paramIndex\" class=\"visible-sm visible-xs\" translate>\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 (click)=\"removeCustomValue(requestConfiguration.requestParams, requestParam)\"\n type=\"button\"\n title=\"{{ 'Remove' | translate }}\"\n >\n <i c8yIcon=\"minus-circle\" class=\"text-danger\"></i>\n </button>\n\n <button\n class=\"btn btn-danger btn-block btn-sm visible-xs visible-sm\"\n (click)=\"removeCustomValue(requestConfiguration.requestParams, requestParam)\"\n type=\"button\"\n title=\"{{ 'Remove' | translate }}\"\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 title=\"{{ 'Add request parameter' | translate }}\"\n type=\"button\"\n class=\"btn btn-default m-t-8 m-b-16\"\n (click)=\"addCustomValue(requestConfiguration.requestParams)\"\n >\n <i c8yIcon=\"plus-circle\" class=\"m-r-4\"></i>\n <span translate>Add request parameter</span>\n </button>\n </div>\n </div>\n </div>\n</fieldset>\n", dependencies: [{ kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.DefaultValidationDirective, selector: "[c8yDefaultValidation]", inputs: ["c8yDefaultValidation"] }, { kind: "directive", type: i3$1.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: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3$1.NgModelGroup, selector: "[ngModelGroup]", inputs: ["ngModelGroup"], exportAs: ["ngModelGroup"] }, { kind: "component", type: i1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
|
|
1213
|
+
RequestConfigurationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: RequestConfigurationComponent, deps: [{ token: i1.ControlContainer }], target: i0.ɵɵFactoryTarget.Component });
|
|
1214
|
+
RequestConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: RequestConfigurationComponent, selector: "c8y-request-configuration", inputs: { templateModel: "templateModel", requestName: "requestName", requestType: "requestType" }, ngImport: i0, template: "<fieldset ngModelGroup=\"{{ requestName }}\" id=\"{{ requestType }}\">\n <div class=\"col-md-12 p-t-24\">\n <div class=\"row m-l-8 m-r-8\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 m-b-xs-8\">\n <div class=\"h4 text-normal text-right text-left-xs\">\n {{ requestName }}\n </div>\n </div>\n\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9\" *ngIf=\"templateModel\">\n <div class=\"row\" *ngIf=\"shouldShow('authorizationRequest')\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label for=\"url\" class=\"control-label\" translate>URL</label>\n <input\n type=\"url\"\n class=\"form-control\"\n name=\"url\"\n [(ngModel)]=\"requestConfiguration.url\"\n [placeholder]=\"\n 'e.g. {{ example }}' | translate: { example: 'http://www.example.com/' }\n \"\n c8yDefaultValidation=\"httpUrl\"\n [required]=\"requestType !== 'logoutRequest'\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\">\n <div *ngIf=\"requestType !== 'authorizationRequest' && requestType !== 'logoutRequest'\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label [for]=\"requestType + 'body'\" class=\"control-label\" translate>Body</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 </div>\n </div>\n </div>\n\n <div *ngIf=\"requestType !== 'logoutRequest'\">\n <div class=\"legend form-block\" translate>Headers</div>\n <div\n class=\"tight-grid\"\n data-cy=\"refreshRequestHeaders\"\n *ngFor=\"let header of requestConfiguration.headers; index as headerIndex\"\n >\n <div class=\"col-md-5\">\n <c8y-form-group>\n <label [for]=\"requestType + 'headerKey' + headerIndex\" class=\"visible-sm visible-xs\" translate>\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 [for]=\"requestType + 'headerValue' + headerIndex\" class=\"visible-sm visible-xs\" translate>\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 title=\"{{ 'Remove' | translate }}\"\n class=\"btn btn-link hidden-xs hidden-sm\"\n (click)=\"removeCustomValue(requestConfiguration.headers, header)\"\n type=\"button\"\n >\n <i c8yIcon=\"minus-circle\" class=\"text-danger\"></i>\n </button>\n <button\n title=\"{{ 'Remove' | translate }}\"\n class=\"btn btn-danger btn-block btn-sm visible-xs visible-sm\"\n (click)=\"removeCustomValue(requestConfiguration.headers, header)\"\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>\n <button\n title=\"{{ 'Add header' | translate }}\"\n class=\"btn btn-default m-t-8 m-b-16\"\n (click)=\"addCustomValue(requestConfiguration.headers)\"\n >\n <i c8yIcon=\"plus-circle\" class=\"m-r-4\"></i>\n <span translate>Add header</span>\n </button>\n </div>\n\n <div class=\"legend form-block\" translate>Request parameters</div>\n <div\n class=\"tight-grid\"\n data-cy=\"requestParam\"\n *ngFor=\"let requestParam of requestConfiguration.requestParams; index as paramIndex\"\n >\n <div class=\"col-md-5\">\n <c8y-form-group>\n <label [for]=\"requestType + 'paramKey' + paramIndex\" class=\"visible-sm visible-xs\" translate>\n Key - {{paramIndex}}\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 [for]=\"requestType + 'paramValue' + paramIndex\" class=\"visible-sm visible-xs\" translate>\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 (click)=\"removeCustomValue(requestConfiguration.requestParams, requestParam)\"\n type=\"button\"\n title=\"{{ 'Remove' | translate }}\"\n >\n <i c8yIcon=\"minus-circle\" class=\"text-danger\"></i>\n </button>\n\n <button\n class=\"btn btn-danger btn-block btn-sm visible-xs visible-sm\"\n (click)=\"removeCustomValue(requestConfiguration.requestParams, requestParam)\"\n type=\"button\"\n title=\"{{ 'Remove' | translate }}\"\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 title=\"{{ 'Add request parameter' | translate }}\"\n type=\"button\"\n class=\"btn btn-default m-t-8 m-b-16\"\n (click)=\"addCustomValue(requestConfiguration.requestParams)\"\n >\n <i c8yIcon=\"plus-circle\" class=\"m-r-4\"></i>\n <span translate>Add request parameter</span>\n </button>\n </div>\n </div>\n </div>\n</fieldset>\n", dependencies: [{ kind: "directive", type: i1$1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1$1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.DefaultValidationDirective, selector: "[c8yDefaultValidation]", inputs: ["c8yDefaultValidation"] }, { 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: "component", type: i1$1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i1$1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "pipe", type: i1$1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
|
|
1212
1215
|
__decorate([
|
|
1213
1216
|
memoize(),
|
|
1214
1217
|
__metadata("design:type", Function),
|
|
@@ -1218,7 +1221,7 @@ __decorate([
|
|
|
1218
1221
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: RequestConfigurationComponent, decorators: [{
|
|
1219
1222
|
type: Component,
|
|
1220
1223
|
args: [{ selector: 'c8y-request-configuration', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<fieldset ngModelGroup=\"{{ requestName }}\" id=\"{{ requestType }}\">\n <div class=\"col-md-12 p-t-24\">\n <div class=\"row m-l-8 m-r-8\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 m-b-xs-8\">\n <div class=\"h4 text-normal text-right text-left-xs\">\n {{ requestName }}\n </div>\n </div>\n\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9\" *ngIf=\"templateModel\">\n <div class=\"row\" *ngIf=\"shouldShow('authorizationRequest')\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label for=\"url\" class=\"control-label\" translate>URL</label>\n <input\n type=\"url\"\n class=\"form-control\"\n name=\"url\"\n [(ngModel)]=\"requestConfiguration.url\"\n [placeholder]=\"\n 'e.g. {{ example }}' | translate: { example: 'http://www.example.com/' }\n \"\n c8yDefaultValidation=\"httpUrl\"\n [required]=\"requestType !== 'logoutRequest'\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\">\n <div *ngIf=\"requestType !== 'authorizationRequest' && requestType !== 'logoutRequest'\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label [for]=\"requestType + 'body'\" class=\"control-label\" translate>Body</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 </div>\n </div>\n </div>\n\n <div *ngIf=\"requestType !== 'logoutRequest'\">\n <div class=\"legend form-block\" translate>Headers</div>\n <div\n class=\"tight-grid\"\n data-cy=\"refreshRequestHeaders\"\n *ngFor=\"let header of requestConfiguration.headers; index as headerIndex\"\n >\n <div class=\"col-md-5\">\n <c8y-form-group>\n <label [for]=\"requestType + 'headerKey' + headerIndex\" class=\"visible-sm visible-xs\" translate>\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 [for]=\"requestType + 'headerValue' + headerIndex\" class=\"visible-sm visible-xs\" translate>\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 title=\"{{ 'Remove' | translate }}\"\n class=\"btn btn-link hidden-xs hidden-sm\"\n (click)=\"removeCustomValue(requestConfiguration.headers, header)\"\n type=\"button\"\n >\n <i c8yIcon=\"minus-circle\" class=\"text-danger\"></i>\n </button>\n <button\n title=\"{{ 'Remove' | translate }}\"\n class=\"btn btn-danger btn-block btn-sm visible-xs visible-sm\"\n (click)=\"removeCustomValue(requestConfiguration.headers, header)\"\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>\n <button\n title=\"{{ 'Add header' | translate }}\"\n class=\"btn btn-default m-t-8 m-b-16\"\n (click)=\"addCustomValue(requestConfiguration.headers)\"\n >\n <i c8yIcon=\"plus-circle\" class=\"m-r-4\"></i>\n <span translate>Add header</span>\n </button>\n </div>\n\n <div class=\"legend form-block\" translate>Request parameters</div>\n <div\n class=\"tight-grid\"\n data-cy=\"requestParam\"\n *ngFor=\"let requestParam of requestConfiguration.requestParams; index as paramIndex\"\n >\n <div class=\"col-md-5\">\n <c8y-form-group>\n <label [for]=\"requestType + 'paramKey' + paramIndex\" class=\"visible-sm visible-xs\" translate>\n Key - {{paramIndex}}\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 [for]=\"requestType + 'paramValue' + paramIndex\" class=\"visible-sm visible-xs\" translate>\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 (click)=\"removeCustomValue(requestConfiguration.requestParams, requestParam)\"\n type=\"button\"\n title=\"{{ 'Remove' | translate }}\"\n >\n <i c8yIcon=\"minus-circle\" class=\"text-danger\"></i>\n </button>\n\n <button\n class=\"btn btn-danger btn-block btn-sm visible-xs visible-sm\"\n (click)=\"removeCustomValue(requestConfiguration.requestParams, requestParam)\"\n type=\"button\"\n title=\"{{ 'Remove' | translate }}\"\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 title=\"{{ 'Add request parameter' | translate }}\"\n type=\"button\"\n class=\"btn btn-default m-t-8 m-b-16\"\n (click)=\"addCustomValue(requestConfiguration.requestParams)\"\n >\n <i c8yIcon=\"plus-circle\" class=\"m-r-4\"></i>\n <span translate>Add request parameter</span>\n </button>\n </div>\n </div>\n </div>\n</fieldset>\n" }]
|
|
1221
|
-
}], ctorParameters: function () { return [{ type:
|
|
1224
|
+
}], ctorParameters: function () { return [{ type: i1.ControlContainer }]; }, propDecorators: { templateModel: [{
|
|
1222
1225
|
type: Input
|
|
1223
1226
|
}], requestName: [{
|
|
1224
1227
|
type: Input
|
|
@@ -1232,7 +1235,7 @@ class UserIdConfigurationComponent {
|
|
|
1232
1235
|
}
|
|
1233
1236
|
}
|
|
1234
1237
|
UserIdConfigurationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UserIdConfigurationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1235
|
-
UserIdConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: UserIdConfigurationComponent, selector: "c8y-user-id-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>User ID</div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9\">\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group\n *ngIf=\"shouldShow('useConstantValue') && templateModel.userIdConfig.useConstantValue\"\n >\n <label for=\"constantValue\" class=\"control-label\" translate>Constant value</label>\n <input\n type=\"text\"\n class=\"form-control\"\n id=\"constantValue\"\n name=\"constantValue\"\n [(ngModel)]=\"templateModel.userIdConfig.constantValue\"\n required\n />\n </c8y-form-group>\n <c8y-form-group\n *ngIf=\"!shouldShow('useConstantValue') || !templateModel.userIdConfig.useConstantValue\"\n >\n <label for=\"jwtField\" class=\"control-label\" translate>JWT field</label>\n <input\n type=\"text\"\n class=\"form-control\"\n id=\"jwtField\"\n name=\"jwtField\"\n [(ngModel)]=\"templateModel.userIdConfig.jwtField\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'upn' }\"\n required\n />\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <div class=\"form-group\" *ngIf=\"shouldShow('useConstantValue')\">\n <label title=\"{{ 'Use constant value' | translate }}\" class=\"c8y-switch m-t-24\">\n <input\n type=\"checkbox\"\n name=\"useConstantValue\"\n id=\"useConstantValue\"\n [(ngModel)]=\"templateModel.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 </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type:
|
|
1238
|
+
UserIdConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: UserIdConfigurationComponent, selector: "c8y-user-id-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>User ID</div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9\">\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group\n *ngIf=\"shouldShow('useConstantValue') && templateModel.userIdConfig.useConstantValue\"\n >\n <label for=\"constantValue\" class=\"control-label\" translate>Constant value</label>\n <input\n type=\"text\"\n class=\"form-control\"\n id=\"constantValue\"\n name=\"constantValue\"\n [(ngModel)]=\"templateModel.userIdConfig.constantValue\"\n required\n />\n </c8y-form-group>\n <c8y-form-group\n *ngIf=\"!shouldShow('useConstantValue') || !templateModel.userIdConfig.useConstantValue\"\n >\n <label for=\"jwtField\" class=\"control-label\" translate>JWT field</label>\n <input\n type=\"text\"\n class=\"form-control\"\n id=\"jwtField\"\n name=\"jwtField\"\n [(ngModel)]=\"templateModel.userIdConfig.jwtField\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'upn' }\"\n required\n />\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <div class=\"form-group\" *ngIf=\"shouldShow('useConstantValue')\">\n <label title=\"{{ 'Use constant value' | translate }}\" class=\"c8y-switch m-t-24\">\n <input\n type=\"checkbox\"\n name=\"useConstantValue\"\n id=\"useConstantValue\"\n [(ngModel)]=\"templateModel.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 </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1$1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: "component", type: i1$1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i1$1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "pipe", type: i1$1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
|
|
1236
1239
|
__decorate([
|
|
1237
1240
|
memoize(),
|
|
1238
1241
|
__metadata("design:type", Function),
|
|
@@ -1257,7 +1260,7 @@ class UserDataMappingComponent {
|
|
|
1257
1260
|
}
|
|
1258
1261
|
}
|
|
1259
1262
|
UserDataMappingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UserDataMappingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1260
|
-
UserDataMappingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: UserDataMappingComponent, selector: "c8y-sso-user-data-mapping", 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>User data mappings</div>\n </div>\n\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9\">\n <div class=\"legend form-block m-t-4\">\n <span translate>Claim names</span>\n <button\n class=\"btn btn-clean\"\n popover=\"{{ CLAIM_NAMES | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Claim names' | translate\"\n >\n <i [c8yIcon]=\"'question-circle-o'\" class=\"text-info\"></i>\n </button>\n </div>\n\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label for=\"firstName\" class=\"control-label\" translate>First name</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 for=\"lastName\" class=\"control-label\" translate>Last name</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 for=\"email\" class=\"control-label\" translate>Email</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 for=\"phoneNumber\" class=\"control-label\" translate>Phone number</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 </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type:
|
|
1263
|
+
UserDataMappingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: UserDataMappingComponent, selector: "c8y-sso-user-data-mapping", 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>User data mappings</div>\n </div>\n\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9\">\n <div class=\"legend form-block m-t-4\">\n <span translate>Claim names</span>\n <button\n class=\"btn btn-clean\"\n popover=\"{{ CLAIM_NAMES | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Claim names' | translate\"\n >\n <i [c8yIcon]=\"'question-circle-o'\" class=\"text-info\"></i>\n </button>\n </div>\n\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label for=\"firstName\" class=\"control-label\" translate>First name</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 for=\"lastName\" class=\"control-label\" translate>Last name</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 for=\"email\" class=\"control-label\" translate>Email</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 for=\"phoneNumber\" class=\"control-label\" translate>Phone number</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 </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1$1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1$1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { 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: "component", type: i1$1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i4.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: i1$1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
|
|
1261
1264
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UserDataMappingComponent, decorators: [{
|
|
1262
1265
|
type: Component,
|
|
1263
1266
|
args: [{ selector: 'c8y-sso-user-data-mapping', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], 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>User data mappings</div>\n </div>\n\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9\">\n <div class=\"legend form-block m-t-4\">\n <span translate>Claim names</span>\n <button\n class=\"btn btn-clean\"\n popover=\"{{ CLAIM_NAMES | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Claim names' | translate\"\n >\n <i [c8yIcon]=\"'question-circle-o'\" class=\"text-info\"></i>\n </button>\n </div>\n\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label for=\"firstName\" class=\"control-label\" translate>First name</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 for=\"lastName\" class=\"control-label\" translate>Last name</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 for=\"email\" class=\"control-label\" translate>Email</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 for=\"phoneNumber\" class=\"control-label\" translate>Phone number</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 </div>\n </div>\n</div>\n" }]
|
|
@@ -1349,12 +1352,12 @@ class DynamicAccessMappingComponent {
|
|
|
1349
1352
|
}
|
|
1350
1353
|
}
|
|
1351
1354
|
}
|
|
1352
|
-
DynamicAccessMappingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DynamicAccessMappingComponent, deps: [{ token:
|
|
1353
|
-
DynamicAccessMappingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DynamicAccessMappingComponent, selector: "c8y-sso-dynamic-access-mapping", inputs: { groups: "groups", apps: "apps", accessMapping: "accessMapping", accessMappingIndex: "accessMappingIndex" }, outputs: { onRemoveAccessMapping: "onRemoveAccessMapping" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"card\">\n <div class=\"card-block overflow-visible\" *ngIf=\"accessMapping.when.childPredicates.length != 0\">\n <div class=\"legend form-block m-t-4\" translate>When</div>\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=\"\n let childPredicate of accessMapping.when.childPredicates;\n last as isLast;\n index as idx\n \"\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 *ngFor=\"let relation of relations\" [ngValue]=\"relation.value\">\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 [for]=\"'value' + accessMappingIndex + idx\" class=\"visible-sm visible-xs\" translate>\n Value\n </label>\n <input\n [name]=\"'value' + accessMappingIndex + idx\"\n [id]=\"'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 name=\"removeButton\"\n class=\"btn btn-link hidden-xs hidden-sm\"\n (click)=\"removeChildPredicate(childPredicate)\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n >\n <i c8yIcon=\"minus-circle\" class=\"text-danger\"></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-xs hidden-xs hidden-sm\"\n (click)=\"addChildPredicate()\"\n type=\"button\"\n translate\n >\n and\n </button>\n <button\n title=\"{{ 'and' | translate }}\"\n class=\"btn btn-default btn-block btn-sm visible-xs visible-sm\"\n (click)=\"addChildPredicate()\"\n type=\"button\"\n translate\n >\n and\n </button>\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"legend form-block\" translate>Provide access to</div>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <div title=\"{{ 'Default global roles' | translate }}\" class=\"form-group\">\n <label [for]=\"'groups' + accessMappingIndex\" class=\"control-label\">\n {{ 'Default global roles' | translate }}\n </label>\n <c8y-select\n [id]=\"'groups' + accessMappingIndex\"\n [items]=\"groups\"\n [selected]=\"selectedGroups\"\n [disableApplyOnNoSelection]=\"true\"\n (onChange)=\"selectedGroups = $event; accessMapping.thenGroups = getIds($event)\"\n ></c8y-select>\n </div>\n </div>\n <div class=\"col-sm-6\">\n <div title=\"{{ 'Default applications' | translate }}\" class=\"form-group\">\n <label [for]=\"'apps' + accessMappingIndex\" class=\"control-label\">\n {{ 'Default applications' | translate }}\n </label>\n <c8y-select\n [id]=\"'apps' + accessMappingIndex\"\n [items]=\"apps\"\n [selected]=\"selectedApps\"\n [disableApplyOnNoSelection]=\"true\"\n (onChange)=\"selectedApps = $event; accessMapping.thenApplications = getIds($event)\"\n ></c8y-select>\n </div>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.SelectComponent, selector: "c8y-select", inputs: ["placeholder", "selectedLabel", "applyLabel", "items", "selected", "updateItems", "disableApplyOnNoSelection"], outputs: ["onChange"] }, { kind: "directive", type:
|
|
1355
|
+
DynamicAccessMappingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DynamicAccessMappingComponent, deps: [{ token: i1.ControlContainer }], target: i0.ɵɵFactoryTarget.Component });
|
|
1356
|
+
DynamicAccessMappingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DynamicAccessMappingComponent, selector: "c8y-sso-dynamic-access-mapping", inputs: { groups: "groups", apps: "apps", accessMapping: "accessMapping", accessMappingIndex: "accessMappingIndex" }, outputs: { onRemoveAccessMapping: "onRemoveAccessMapping" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"card\">\n <div class=\"card-block overflow-visible\" *ngIf=\"accessMapping.when.childPredicates.length != 0\">\n <div class=\"legend form-block m-t-4\" translate>When</div>\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=\"\n let childPredicate of accessMapping.when.childPredicates;\n last as isLast;\n index as idx\n \"\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 *ngFor=\"let relation of relations\" [ngValue]=\"relation.value\">\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 [for]=\"'value' + accessMappingIndex + idx\" class=\"visible-sm visible-xs\" translate>\n Value\n </label>\n <input\n [name]=\"'value' + accessMappingIndex + idx\"\n [id]=\"'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 name=\"removeButton\"\n class=\"btn btn-link hidden-xs hidden-sm\"\n (click)=\"removeChildPredicate(childPredicate)\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n >\n <i c8yIcon=\"minus-circle\" class=\"text-danger\"></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-xs hidden-xs hidden-sm\"\n (click)=\"addChildPredicate()\"\n type=\"button\"\n translate\n >\n and\n </button>\n <button\n title=\"{{ 'and' | translate }}\"\n class=\"btn btn-default btn-block btn-sm visible-xs visible-sm\"\n (click)=\"addChildPredicate()\"\n type=\"button\"\n translate\n >\n and\n </button>\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"legend form-block\" translate>Provide access to</div>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <div title=\"{{ 'Default global roles' | translate }}\" class=\"form-group\">\n <label [for]=\"'groups' + accessMappingIndex\" class=\"control-label\">\n {{ 'Default global roles' | translate }}\n </label>\n <c8y-select\n [id]=\"'groups' + accessMappingIndex\"\n [items]=\"groups\"\n [selected]=\"selectedGroups\"\n [disableApplyOnNoSelection]=\"true\"\n (onChange)=\"selectedGroups = $event; accessMapping.thenGroups = getIds($event)\"\n ></c8y-select>\n </div>\n </div>\n <div class=\"col-sm-6\">\n <div title=\"{{ 'Default applications' | translate }}\" class=\"form-group\">\n <label [for]=\"'apps' + accessMappingIndex\" class=\"control-label\">\n {{ 'Default applications' | translate }}\n </label>\n <c8y-select\n [id]=\"'apps' + accessMappingIndex\"\n [items]=\"apps\"\n [selected]=\"selectedApps\"\n [disableApplyOnNoSelection]=\"true\"\n (onChange)=\"selectedApps = $event; accessMapping.thenApplications = getIds($event)\"\n ></c8y-select>\n </div>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1$1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1$1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1$1.SelectComponent, selector: "c8y-select", inputs: ["placeholder", "selectedLabel", "applyLabel", "items", "selected", "updateItems", "disableApplyOnNoSelection"], outputs: ["onChange"] }, { 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: "component", type: i1$1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i1$1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "pipe", type: i1$1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
|
|
1354
1357
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DynamicAccessMappingComponent, decorators: [{
|
|
1355
1358
|
type: Component,
|
|
1356
1359
|
args: [{ selector: 'c8y-sso-dynamic-access-mapping', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div class=\"card\">\n <div class=\"card-block overflow-visible\" *ngIf=\"accessMapping.when.childPredicates.length != 0\">\n <div class=\"legend form-block m-t-4\" translate>When</div>\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=\"\n let childPredicate of accessMapping.when.childPredicates;\n last as isLast;\n index as idx\n \"\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 *ngFor=\"let relation of relations\" [ngValue]=\"relation.value\">\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 [for]=\"'value' + accessMappingIndex + idx\" class=\"visible-sm visible-xs\" translate>\n Value\n </label>\n <input\n [name]=\"'value' + accessMappingIndex + idx\"\n [id]=\"'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 name=\"removeButton\"\n class=\"btn btn-link hidden-xs hidden-sm\"\n (click)=\"removeChildPredicate(childPredicate)\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n >\n <i c8yIcon=\"minus-circle\" class=\"text-danger\"></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-xs hidden-xs hidden-sm\"\n (click)=\"addChildPredicate()\"\n type=\"button\"\n translate\n >\n and\n </button>\n <button\n title=\"{{ 'and' | translate }}\"\n class=\"btn btn-default btn-block btn-sm visible-xs visible-sm\"\n (click)=\"addChildPredicate()\"\n type=\"button\"\n translate\n >\n and\n </button>\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"legend form-block\" translate>Provide access to</div>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <div title=\"{{ 'Default global roles' | translate }}\" class=\"form-group\">\n <label [for]=\"'groups' + accessMappingIndex\" class=\"control-label\">\n {{ 'Default global roles' | translate }}\n </label>\n <c8y-select\n [id]=\"'groups' + accessMappingIndex\"\n [items]=\"groups\"\n [selected]=\"selectedGroups\"\n [disableApplyOnNoSelection]=\"true\"\n (onChange)=\"selectedGroups = $event; accessMapping.thenGroups = getIds($event)\"\n ></c8y-select>\n </div>\n </div>\n <div class=\"col-sm-6\">\n <div title=\"{{ 'Default applications' | translate }}\" class=\"form-group\">\n <label [for]=\"'apps' + accessMappingIndex\" class=\"control-label\">\n {{ 'Default applications' | translate }}\n </label>\n <c8y-select\n [id]=\"'apps' + accessMappingIndex\"\n [items]=\"apps\"\n [selected]=\"selectedApps\"\n [disableApplyOnNoSelection]=\"true\"\n (onChange)=\"selectedApps = $event; accessMapping.thenApplications = getIds($event)\"\n ></c8y-select>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
1357
|
-
}], ctorParameters: function () { return [{ type:
|
|
1360
|
+
}], ctorParameters: function () { return [{ type: i1.ControlContainer }]; }, propDecorators: { groups: [{
|
|
1358
1361
|
type: Input
|
|
1359
1362
|
}], apps: [{
|
|
1360
1363
|
type: Input
|
|
@@ -1416,12 +1419,12 @@ class AccessMappingComponent {
|
|
|
1416
1419
|
});
|
|
1417
1420
|
}
|
|
1418
1421
|
}
|
|
1419
|
-
AccessMappingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AccessMappingComponent, deps: [{ token:
|
|
1420
|
-
AccessMappingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: AccessMappingComponent, selector: "c8y-sso-access-mapping", inputs: { apps: "apps", groups: "groups", templateModel: "templateModel" }, usesOnChanges: true, 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>Access mapping</div>\n </div>\n\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9\">\n <div class=\"dynamic-access\">\n <div class=\"legend form-block m-t-4\" translate>Dynamic access mapping</div>\n <c8y-form-group>\n <c8y-ui-empty-state\n *ngIf=\"templateModel.onNewUser.dynamicMapping.mappings.length === 0\"\n [icon]=\"'list'\"\n [title]=\"'No access mapping rules defined.' | translate\"\n [subtitle]=\"'Click below to add a new mapping.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n <div\n *ngFor=\"\n let accessMapping of templateModel.onNewUser.dynamicMapping.mappings;\n index as idx\n \"\n >\n <c8y-sso-dynamic-access-mapping\n [accessMapping]=\"accessMapping\"\n (onRemoveAccessMapping)=\"onRemove(accessMapping)\"\n [apps]=\"apps\"\n [groups]=\"groups\"\n [accessMappingIndex]=\"idx\"\n ></c8y-sso-dynamic-access-mapping>\n </div>\n <div class=\"scroll-column-footer\">\n <button\n title=\"{{ 'Add access mapping' | translate }}\"\n class=\"btn btn-default m-b-16\"\n (click)=\"addAccessMapping()\"\n type=\"button\"\n >\n <i c8yIcon=\"plus-circle\" class=\"m-r-4\"></i>\n {{ 'Add access mapping' | translate }}\n </button>\n </div>\n </c8y-form-group>\n </div>\n <c8y-form-group>\n <label\n title=\"{{ USE_ACCESS_MAPPING_ON_USER_CREATION_OPTION | translate }}\"\n class=\"c8y-radio input-sm\"\n >\n <input\n type=\"radio\"\n name=\"dynamicAccessMappingConfiguration\"\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 popover=\"{{ USE_ACCESS_MAPPING_ON_USER_CREATION_TOOLTIP | translate }}\"\n placement=\"right\"\n [outsideClick]=\"true\"\n container=\"body\"\n [attr.aria-label]=\"'Help' | translate\"\n >\n <i c8yIcon=\"question-circle-o\"></i>\n </button>\n </label>\n <label\n title=\"{{ UPDATE_ROLES_LISTED_IN_ACCESS_MAPPING_ON_EACH_LOG_IN_OPTION | translate }}\"\n class=\"c8y-radio input-sm\"\n >\n <input\n type=\"radio\"\n name=\"dynamicAccessMappingConfiguration\"\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 popover=\"{{ UPDATE_ROLES_LISTED_IN_ACCESS_MAPPING_ON_EACH_LOG_IN_TOOLTIP | translate }}\"\n placement=\"right\"\n [outsideClick]=\"true\"\n container=\"body\"\n [attr.aria-label]=\"'Help' | translate\"\n >\n <i c8yIcon=\"question-circle-o\"></i>\n </button>\n </label>\n <label\n title=\"{{ CLEAR_AND_UPDATED_ROLES_ON_EACH_LOG_IN_OPTION | translate }}\"\n class=\"c8y-radio input-sm\"\n >\n <input\n type=\"radio\"\n name=\"dynamicAccessMappingConfiguration\"\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 popover=\"{{ CLEAR_AND_UPDATED_ROLES_ON_EACH_LOG_IN_TOOLTIP | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n container=\"body\"\n >\n <i c8yIcon=\"question-circle-o\"></i>\n </button>\n </label>\n </c8y-form-group>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i1.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i4.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: DynamicAccessMappingComponent, selector: "c8y-sso-dynamic-access-mapping", inputs: ["groups", "apps", "accessMapping", "accessMappingIndex"], outputs: ["onRemoveAccessMapping"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
|
|
1422
|
+
AccessMappingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AccessMappingComponent, deps: [{ token: i1.ControlContainer }], target: i0.ɵɵFactoryTarget.Component });
|
|
1423
|
+
AccessMappingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: AccessMappingComponent, selector: "c8y-sso-access-mapping", inputs: { apps: "apps", groups: "groups", templateModel: "templateModel" }, usesOnChanges: true, 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>Access mapping</div>\n </div>\n\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9\">\n <div class=\"dynamic-access\">\n <div class=\"legend form-block m-t-4\" translate>Dynamic access mapping</div>\n <c8y-form-group>\n <c8y-ui-empty-state\n *ngIf=\"templateModel.onNewUser.dynamicMapping.mappings.length === 0\"\n [icon]=\"'list'\"\n [title]=\"'No access mapping rules defined.' | translate\"\n [subtitle]=\"'Click below to add a new mapping.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n <div\n *ngFor=\"\n let accessMapping of templateModel.onNewUser.dynamicMapping.mappings;\n index as idx\n \"\n >\n <c8y-sso-dynamic-access-mapping\n [accessMapping]=\"accessMapping\"\n (onRemoveAccessMapping)=\"onRemove(accessMapping)\"\n [apps]=\"apps\"\n [groups]=\"groups\"\n [accessMappingIndex]=\"idx\"\n ></c8y-sso-dynamic-access-mapping>\n </div>\n <div class=\"scroll-column-footer\">\n <button\n title=\"{{ 'Add access mapping' | translate }}\"\n class=\"btn btn-default m-b-16\"\n (click)=\"addAccessMapping()\"\n type=\"button\"\n >\n <i c8yIcon=\"plus-circle\" class=\"m-r-4\"></i>\n {{ 'Add access mapping' | translate }}\n </button>\n </div>\n </c8y-form-group>\n </div>\n <c8y-form-group>\n <label\n title=\"{{ USE_ACCESS_MAPPING_ON_USER_CREATION_OPTION | translate }}\"\n class=\"c8y-radio input-sm\"\n >\n <input\n type=\"radio\"\n name=\"dynamicAccessMappingConfiguration\"\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 popover=\"{{ USE_ACCESS_MAPPING_ON_USER_CREATION_TOOLTIP | translate }}\"\n placement=\"right\"\n [outsideClick]=\"true\"\n container=\"body\"\n [attr.aria-label]=\"'Help' | translate\"\n >\n <i c8yIcon=\"question-circle-o\"></i>\n </button>\n </label>\n <label\n title=\"{{ UPDATE_ROLES_LISTED_IN_ACCESS_MAPPING_ON_EACH_LOG_IN_OPTION | translate }}\"\n class=\"c8y-radio input-sm\"\n >\n <input\n type=\"radio\"\n name=\"dynamicAccessMappingConfiguration\"\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 popover=\"{{ UPDATE_ROLES_LISTED_IN_ACCESS_MAPPING_ON_EACH_LOG_IN_TOOLTIP | translate }}\"\n placement=\"right\"\n [outsideClick]=\"true\"\n container=\"body\"\n [attr.aria-label]=\"'Help' | translate\"\n >\n <i c8yIcon=\"question-circle-o\"></i>\n </button>\n </label>\n <label\n title=\"{{ CLEAR_AND_UPDATED_ROLES_ON_EACH_LOG_IN_OPTION | translate }}\"\n class=\"c8y-radio input-sm\"\n >\n <input\n type=\"radio\"\n name=\"dynamicAccessMappingConfiguration\"\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 popover=\"{{ CLEAR_AND_UPDATED_ROLES_ON_EACH_LOG_IN_TOOLTIP | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n container=\"body\"\n >\n <i c8yIcon=\"question-circle-o\"></i>\n </button>\n </label>\n </c8y-form-group>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i1$1.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i1$1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1$1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1$1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i4.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: DynamicAccessMappingComponent, selector: "c8y-sso-dynamic-access-mapping", inputs: ["groups", "apps", "accessMapping", "accessMappingIndex"], outputs: ["onRemoveAccessMapping"] }, { kind: "pipe", type: i1$1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
|
|
1421
1424
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AccessMappingComponent, decorators: [{
|
|
1422
1425
|
type: Component,
|
|
1423
1426
|
args: [{ selector: 'c8y-sso-access-mapping', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], 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>Access mapping</div>\n </div>\n\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9\">\n <div class=\"dynamic-access\">\n <div class=\"legend form-block m-t-4\" translate>Dynamic access mapping</div>\n <c8y-form-group>\n <c8y-ui-empty-state\n *ngIf=\"templateModel.onNewUser.dynamicMapping.mappings.length === 0\"\n [icon]=\"'list'\"\n [title]=\"'No access mapping rules defined.' | translate\"\n [subtitle]=\"'Click below to add a new mapping.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n <div\n *ngFor=\"\n let accessMapping of templateModel.onNewUser.dynamicMapping.mappings;\n index as idx\n \"\n >\n <c8y-sso-dynamic-access-mapping\n [accessMapping]=\"accessMapping\"\n (onRemoveAccessMapping)=\"onRemove(accessMapping)\"\n [apps]=\"apps\"\n [groups]=\"groups\"\n [accessMappingIndex]=\"idx\"\n ></c8y-sso-dynamic-access-mapping>\n </div>\n <div class=\"scroll-column-footer\">\n <button\n title=\"{{ 'Add access mapping' | translate }}\"\n class=\"btn btn-default m-b-16\"\n (click)=\"addAccessMapping()\"\n type=\"button\"\n >\n <i c8yIcon=\"plus-circle\" class=\"m-r-4\"></i>\n {{ 'Add access mapping' | translate }}\n </button>\n </div>\n </c8y-form-group>\n </div>\n <c8y-form-group>\n <label\n title=\"{{ USE_ACCESS_MAPPING_ON_USER_CREATION_OPTION | translate }}\"\n class=\"c8y-radio input-sm\"\n >\n <input\n type=\"radio\"\n name=\"dynamicAccessMappingConfiguration\"\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 popover=\"{{ USE_ACCESS_MAPPING_ON_USER_CREATION_TOOLTIP | translate }}\"\n placement=\"right\"\n [outsideClick]=\"true\"\n container=\"body\"\n [attr.aria-label]=\"'Help' | translate\"\n >\n <i c8yIcon=\"question-circle-o\"></i>\n </button>\n </label>\n <label\n title=\"{{ UPDATE_ROLES_LISTED_IN_ACCESS_MAPPING_ON_EACH_LOG_IN_OPTION | translate }}\"\n class=\"c8y-radio input-sm\"\n >\n <input\n type=\"radio\"\n name=\"dynamicAccessMappingConfiguration\"\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 popover=\"{{ UPDATE_ROLES_LISTED_IN_ACCESS_MAPPING_ON_EACH_LOG_IN_TOOLTIP | translate }}\"\n placement=\"right\"\n [outsideClick]=\"true\"\n container=\"body\"\n [attr.aria-label]=\"'Help' | translate\"\n >\n <i c8yIcon=\"question-circle-o\"></i>\n </button>\n </label>\n <label\n title=\"{{ CLEAR_AND_UPDATED_ROLES_ON_EACH_LOG_IN_OPTION | translate }}\"\n class=\"c8y-radio input-sm\"\n >\n <input\n type=\"radio\"\n name=\"dynamicAccessMappingConfiguration\"\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 popover=\"{{ CLEAR_AND_UPDATED_ROLES_ON_EACH_LOG_IN_TOOLTIP | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n container=\"body\"\n >\n <i c8yIcon=\"question-circle-o\"></i>\n </button>\n </label>\n </c8y-form-group>\n </div>\n </div>\n</div>\n" }]
|
|
1424
|
-
}], ctorParameters: function () { return [{ type:
|
|
1427
|
+
}], ctorParameters: function () { return [{ type: i1.ControlContainer }]; }, propDecorators: { apps: [{
|
|
1425
1428
|
type: Input
|
|
1426
1429
|
}], groups: [{
|
|
1427
1430
|
type: Input
|
|
@@ -1445,8 +1448,8 @@ class SignatureConfigurationComponent {
|
|
|
1445
1448
|
this.controlContainer.control.markAsDirty();
|
|
1446
1449
|
}
|
|
1447
1450
|
}
|
|
1448
|
-
SignatureConfigurationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SignatureConfigurationComponent, deps: [{ token:
|
|
1449
|
-
SignatureConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SignatureConfigurationComponent, selector: "c8y-sso-signature-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 m-b-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>Signature verification</div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9\">\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <div *ngIf=\"shouldShow('certificateType')\" class=\"form-group p-relative\">\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <label for=\"certificateType\" class=\"control-label\" translate>Verifier</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 </div>\n\n <div\n id=\"adfs\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.certificateTypeChosen === certificateType.ADFS\n \"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label for=\"adfsManifestUrl\" class=\"control-label\" translate>ADFS manifest URL</label>\n <input\n type=\"url\"\n class=\"form-control\"\n required\n [placeholder]=\"\n 'e.g. {{ example }}'\n | translate\n : {\n example:\n '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 </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 for=\"publicKeyDiscoveryUrl\" class=\"control-label\" translate>\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 for=\"jwksPublicKeyDiscoveryUrl\" class=\"control-label\" translate>\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 <c8y-form-group\n *ngIf=\"templateModel.signatureVerificationConfig.manual.customCertificates.length > 1\"\n >\n <div class=\"legend form-block\" translate>Manual</div>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <label for=\"certIdField\" class=\"control-label\">\n {{ 'Certificate ID field' | translate }}\n <button\n class=\"btn-help\"\n popover=\"{{ CERTIFICATE_ID_FIELD_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n >\n <i c8yIcon=\"question-circle-o\"></i>\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 </c8y-form-group>\n\n <div>\n <div class=\"legend form-block\" translate>Certificates</div>\n <div\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-sm-6\">\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-sm-3\">\n <div class=\"form-group datepicker\">\n <c8y-form-group>\n <label [for]=\"'validFromPicker' + crtIndex\" class=\"control-label\">\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 placeholder=\"{{ 'Date from' | translate }}\"\n [bsConfig]=\"{ customTodayClass: 'today' }\"\n [maxDate]=\"customCertificate.validTill\"\n bsDatepicker\n required\n />\n </c8y-form-group>\n </div>\n </div>\n <div class=\"col-sm-3\">\n <div class=\"form-group datepicker\">\n <c8y-form-group>\n <label [for]=\"'validTillPicker' + crtIndex\" class=\"control-label\">\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 aria-label=\"{{ 'Date to' | translate }}\"\n [bsConfig]=\"{ customTodayClass: 'today' }\"\n bsDatepicker\n [minDate]=\"customCertificate.validFrom\"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n </div>\n <div\n class=\"form-group\"\n *ngIf=\"templateModel.signatureVerificationConfig.manual.customCertificates.length > 1\"\n >\n <button\n title=\"{{ 'Delete certificate' | translate }}\"\n class=\"btn btn-danger btn-sm hidden-xs\"\n (click)=\"removeCustomCertificate(customCertificate)\"\n type=\"button\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n <span>{{ 'Delete certificate' | translate }}</span>\n </button>\n\n <button\n title=\"{{ 'Delete certificate' | translate }}\"\n class=\"btn btn-danger btn-block btn-sm visible-xs\"\n (click)=\"removeCustomCertificate(customCertificate)\"\n type=\"button\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n <span>{{ 'Delete certificate' | translate }}</span>\n </button>\n </div>\n <div\n class=\"separator-top p-b-24\"\n *ngIf=\"templateModel.signatureVerificationConfig.manual.customCertificates.length > 1\"\n ></div>\n </div>\n <button\n title=\"{{ 'Add certificate' | translate }}\"\n type=\"button\"\n class=\"btn btn-default m-b-16 m-t-8\"\n (click)=\"templateModel.signatureVerificationConfig.manual.addCustomCertificate()\"\n name=\"addCertificate\"\n >\n <i c8yIcon=\"plus-circle\" class=\"m-r-4\"></i>\n <span>{{ 'Add certificate' | translate }}</span>\n </button>\n </div>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3$1.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: i3$1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3$1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4.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: i5.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i5.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.KeyValuePipe, name: "keyvalue" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
|
|
1451
|
+
SignatureConfigurationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SignatureConfigurationComponent, deps: [{ token: i1.ControlContainer }], target: i0.ɵɵFactoryTarget.Component });
|
|
1452
|
+
SignatureConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SignatureConfigurationComponent, selector: "c8y-sso-signature-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 m-b-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>Signature verification</div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9\">\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <div *ngIf=\"shouldShow('certificateType')\" class=\"form-group p-relative\">\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <label for=\"certificateType\" class=\"control-label\" translate>Verifier</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 </div>\n\n <div\n id=\"adfs\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.certificateTypeChosen === certificateType.ADFS\n \"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label for=\"adfsManifestUrl\" class=\"control-label\" translate>ADFS manifest URL</label>\n <input\n type=\"url\"\n class=\"form-control\"\n required\n [placeholder]=\"\n 'e.g. {{ example }}'\n | translate\n : {\n example:\n '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 </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 for=\"publicKeyDiscoveryUrl\" class=\"control-label\" translate>\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 for=\"jwksPublicKeyDiscoveryUrl\" class=\"control-label\" translate>\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 <c8y-form-group\n *ngIf=\"templateModel.signatureVerificationConfig.manual.customCertificates.length > 1\"\n >\n <div class=\"legend form-block\" translate>Manual</div>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <label for=\"certIdField\" class=\"control-label\">\n {{ 'Certificate ID field' | translate }}\n <button\n class=\"btn-help\"\n popover=\"{{ CERTIFICATE_ID_FIELD_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n >\n <i c8yIcon=\"question-circle-o\"></i>\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 </c8y-form-group>\n\n <div>\n <div class=\"legend form-block\" translate>Certificates</div>\n <div\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-sm-6\">\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-sm-3\">\n <div class=\"form-group datepicker\">\n <c8y-form-group>\n <label [for]=\"'validFromPicker' + crtIndex\" class=\"control-label\">\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 placeholder=\"{{ 'Date from' | translate }}\"\n [bsConfig]=\"{ customTodayClass: 'today' }\"\n [maxDate]=\"customCertificate.validTill\"\n bsDatepicker\n required\n />\n </c8y-form-group>\n </div>\n </div>\n <div class=\"col-sm-3\">\n <div class=\"form-group datepicker\">\n <c8y-form-group>\n <label [for]=\"'validTillPicker' + crtIndex\" class=\"control-label\">\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 aria-label=\"{{ 'Date to' | translate }}\"\n [bsConfig]=\"{ customTodayClass: 'today' }\"\n bsDatepicker\n [minDate]=\"customCertificate.validFrom\"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n </div>\n <div\n class=\"form-group\"\n *ngIf=\"templateModel.signatureVerificationConfig.manual.customCertificates.length > 1\"\n >\n <button\n title=\"{{ 'Delete certificate' | translate }}\"\n class=\"btn btn-danger btn-sm hidden-xs\"\n (click)=\"removeCustomCertificate(customCertificate)\"\n type=\"button\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n <span>{{ 'Delete certificate' | translate }}</span>\n </button>\n\n <button\n title=\"{{ 'Delete certificate' | translate }}\"\n class=\"btn btn-danger btn-block btn-sm visible-xs\"\n (click)=\"removeCustomCertificate(customCertificate)\"\n type=\"button\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n <span>{{ 'Delete certificate' | translate }}</span>\n </button>\n </div>\n <div\n class=\"separator-top p-b-24\"\n *ngIf=\"templateModel.signatureVerificationConfig.manual.customCertificates.length > 1\"\n ></div>\n </div>\n <button\n title=\"{{ 'Add certificate' | translate }}\"\n type=\"button\"\n class=\"btn btn-default m-b-16 m-t-8\"\n (click)=\"templateModel.signatureVerificationConfig.manual.addCustomCertificate()\"\n name=\"addCertificate\"\n >\n <i c8yIcon=\"plus-circle\" class=\"m-r-4\"></i>\n <span>{{ 'Add certificate' | translate }}</span>\n </button>\n </div>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1$1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1$1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: "component", type: i1$1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i1$1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4.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: i5.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i5.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "pipe", type: i1$1.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.KeyValuePipe, name: "keyvalue" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
|
|
1450
1453
|
__decorate([
|
|
1451
1454
|
memoize(),
|
|
1452
1455
|
__metadata("design:type", Function),
|
|
@@ -1456,7 +1459,7 @@ __decorate([
|
|
|
1456
1459
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SignatureConfigurationComponent, decorators: [{
|
|
1457
1460
|
type: Component,
|
|
1458
1461
|
args: [{ selector: 'c8y-sso-signature-configuration', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div class=\"col-md-12 p-t-16\">\n <div class=\"row m-l-8 m-r-8 m-b-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>Signature verification</div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9\">\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <div *ngIf=\"shouldShow('certificateType')\" class=\"form-group p-relative\">\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <label for=\"certificateType\" class=\"control-label\" translate>Verifier</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 </div>\n\n <div\n id=\"adfs\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.certificateTypeChosen === certificateType.ADFS\n \"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label for=\"adfsManifestUrl\" class=\"control-label\" translate>ADFS manifest URL</label>\n <input\n type=\"url\"\n class=\"form-control\"\n required\n [placeholder]=\"\n 'e.g. {{ example }}'\n | translate\n : {\n example:\n '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 </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 for=\"publicKeyDiscoveryUrl\" class=\"control-label\" translate>\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 for=\"jwksPublicKeyDiscoveryUrl\" class=\"control-label\" translate>\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 <c8y-form-group\n *ngIf=\"templateModel.signatureVerificationConfig.manual.customCertificates.length > 1\"\n >\n <div class=\"legend form-block\" translate>Manual</div>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <label for=\"certIdField\" class=\"control-label\">\n {{ 'Certificate ID field' | translate }}\n <button\n class=\"btn-help\"\n popover=\"{{ CERTIFICATE_ID_FIELD_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Help' | translate\"\n >\n <i c8yIcon=\"question-circle-o\"></i>\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 </c8y-form-group>\n\n <div>\n <div class=\"legend form-block\" translate>Certificates</div>\n <div\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-sm-6\">\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-sm-3\">\n <div class=\"form-group datepicker\">\n <c8y-form-group>\n <label [for]=\"'validFromPicker' + crtIndex\" class=\"control-label\">\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 placeholder=\"{{ 'Date from' | translate }}\"\n [bsConfig]=\"{ customTodayClass: 'today' }\"\n [maxDate]=\"customCertificate.validTill\"\n bsDatepicker\n required\n />\n </c8y-form-group>\n </div>\n </div>\n <div class=\"col-sm-3\">\n <div class=\"form-group datepicker\">\n <c8y-form-group>\n <label [for]=\"'validTillPicker' + crtIndex\" class=\"control-label\">\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 aria-label=\"{{ 'Date to' | translate }}\"\n [bsConfig]=\"{ customTodayClass: 'today' }\"\n bsDatepicker\n [minDate]=\"customCertificate.validFrom\"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n </div>\n <div\n class=\"form-group\"\n *ngIf=\"templateModel.signatureVerificationConfig.manual.customCertificates.length > 1\"\n >\n <button\n title=\"{{ 'Delete certificate' | translate }}\"\n class=\"btn btn-danger btn-sm hidden-xs\"\n (click)=\"removeCustomCertificate(customCertificate)\"\n type=\"button\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n <span>{{ 'Delete certificate' | translate }}</span>\n </button>\n\n <button\n title=\"{{ 'Delete certificate' | translate }}\"\n class=\"btn btn-danger btn-block btn-sm visible-xs\"\n (click)=\"removeCustomCertificate(customCertificate)\"\n type=\"button\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n <span>{{ 'Delete certificate' | translate }}</span>\n </button>\n </div>\n <div\n class=\"separator-top p-b-24\"\n *ngIf=\"templateModel.signatureVerificationConfig.manual.customCertificates.length > 1\"\n ></div>\n </div>\n <button\n title=\"{{ 'Add certificate' | translate }}\"\n type=\"button\"\n class=\"btn btn-default m-b-16 m-t-8\"\n (click)=\"templateModel.signatureVerificationConfig.manual.addCustomCertificate()\"\n name=\"addCertificate\"\n >\n <i c8yIcon=\"plus-circle\" class=\"m-r-4\"></i>\n <span>{{ 'Add certificate' | translate }}</span>\n </button>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
1459
|
-
}], ctorParameters: function () { return [{ type:
|
|
1462
|
+
}], ctorParameters: function () { return [{ type: i1.ControlContainer }]; }, propDecorators: { templateModel: [{
|
|
1460
1463
|
type: Input
|
|
1461
1464
|
}], shouldShow: [] } });
|
|
1462
1465
|
|
|
@@ -1467,7 +1470,7 @@ class CustomTemplateComponent extends TemplateComponent {
|
|
|
1467
1470
|
}
|
|
1468
1471
|
}
|
|
1469
1472
|
CustomTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CustomTemplateComponent, deps: [{ token: CustomConfigurationMapper }], target: i0.ɵɵFactoryTarget.Component });
|
|
1470
|
-
CustomTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: CustomTemplateComponent, selector: "c8y-custom-template", usesInheritance: true, ngImport: i0, template: "<div *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-basic-configuration\n [templateModel]=\"templateModel\">\n </c8y-basic-configuration>\n <hr/>\n <c8y-sso-access-mapping\n [templateModel]=\"templateModel\"\n [apps]=\"apps\"\n [groups]=\"groups\"\n >\n </c8y-sso-access-mapping>\n <hr/>\n <c8y-sso-user-data-mapping\n [templateModel]=\"templateModel\">\n </c8y-sso-user-data-mapping>\n <hr/>\n <c8y-user-id-configuration\n [templateModel]=\"templateModel\">\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: i3.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: UserIdConfigurationComponent, selector: "c8y-user-id-configuration", inputs: ["templateModel"] }, { kind: "component", type: UserDataMappingComponent, selector: "c8y-sso-user-data-mapping", inputs: ["templateModel"] }, { kind: "component", type: AccessMappingComponent, selector: "c8y-sso-access-mapping", inputs: ["apps", "groups", "templateModel"] }, { kind: "component", type: SignatureConfigurationComponent, selector: "c8y-sso-signature-configuration", inputs: ["templateModel"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
|
|
1473
|
+
CustomTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: CustomTemplateComponent, selector: "c8y-custom-template", usesInheritance: true, ngImport: i0, template: "<div *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-basic-configuration\n [templateModel]=\"templateModel\">\n </c8y-basic-configuration>\n <hr/>\n <c8y-sso-access-mapping\n [templateModel]=\"templateModel\"\n [apps]=\"apps\"\n [groups]=\"groups\"\n >\n </c8y-sso-access-mapping>\n <hr/>\n <c8y-sso-user-data-mapping\n [templateModel]=\"templateModel\">\n </c8y-sso-user-data-mapping>\n <hr/>\n <c8y-user-id-configuration\n [templateModel]=\"templateModel\">\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: i3.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: UserIdConfigurationComponent, selector: "c8y-user-id-configuration", inputs: ["templateModel"] }, { kind: "component", type: UserDataMappingComponent, selector: "c8y-sso-user-data-mapping", inputs: ["templateModel"] }, { kind: "component", type: AccessMappingComponent, selector: "c8y-sso-access-mapping", inputs: ["apps", "groups", "templateModel"] }, { kind: "component", type: SignatureConfigurationComponent, selector: "c8y-sso-signature-configuration", inputs: ["templateModel"] }, { kind: "pipe", type: i1$1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
|
|
1471
1474
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CustomTemplateComponent, decorators: [{
|
|
1472
1475
|
type: Component,
|
|
1473
1476
|
args: [{ selector: 'c8y-custom-template', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div *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-basic-configuration\n [templateModel]=\"templateModel\">\n </c8y-basic-configuration>\n <hr/>\n <c8y-sso-access-mapping\n [templateModel]=\"templateModel\"\n [apps]=\"apps\"\n [groups]=\"groups\"\n >\n </c8y-sso-access-mapping>\n <hr/>\n <c8y-sso-user-data-mapping\n [templateModel]=\"templateModel\">\n </c8y-sso-user-data-mapping>\n <hr/>\n <c8y-user-id-configuration\n [templateModel]=\"templateModel\">\n </c8y-user-id-configuration>\n <hr/>\n <c8y-sso-signature-configuration\n [templateModel]=\"templateModel\">\n </c8y-sso-signature-configuration>\n</div>\n" }]
|
|
@@ -1594,7 +1597,7 @@ class KeyCloakTemplateComponent extends TemplateComponent {
|
|
|
1594
1597
|
}
|
|
1595
1598
|
}
|
|
1596
1599
|
KeyCloakTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: KeyCloakTemplateComponent, deps: [{ token: KeyCloakConfigurationMapper }], target: i0.ɵɵFactoryTarget.Component });
|
|
1597
|
-
KeyCloakTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: KeyCloakTemplateComponent, 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-user-id-configuration [templateModel]=\"templateModel\"></c8y-user-id-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-sso-access-mapping\n [templateModel]=\"templateModel\"\n [apps]=\"apps\"\n [groups]=\"groups\">\n </c8y-sso-access-mapping>\n <hr/>\n <c8y-sso-user-data-mapping [templateModel]=\"templateModel\"></c8y-sso-user-data-mapping>\n</div>\n", dependencies: [{ kind: "directive", type: i3.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: UserIdConfigurationComponent, selector: "c8y-user-id-configuration", inputs: ["templateModel"] }, { kind: "component", type: UserDataMappingComponent, selector: "c8y-sso-user-data-mapping", inputs: ["templateModel"] }, { kind: "component", type: AccessMappingComponent, selector: "c8y-sso-access-mapping", inputs: ["apps", "groups", "templateModel"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
|
|
1600
|
+
KeyCloakTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: KeyCloakTemplateComponent, 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-user-id-configuration [templateModel]=\"templateModel\"></c8y-user-id-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-sso-access-mapping\n [templateModel]=\"templateModel\"\n [apps]=\"apps\"\n [groups]=\"groups\">\n </c8y-sso-access-mapping>\n <hr/>\n <c8y-sso-user-data-mapping [templateModel]=\"templateModel\"></c8y-sso-user-data-mapping>\n</div>\n", dependencies: [{ kind: "directive", type: i3.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: UserIdConfigurationComponent, selector: "c8y-user-id-configuration", inputs: ["templateModel"] }, { kind: "component", type: UserDataMappingComponent, selector: "c8y-sso-user-data-mapping", inputs: ["templateModel"] }, { kind: "component", type: AccessMappingComponent, selector: "c8y-sso-access-mapping", inputs: ["apps", "groups", "templateModel"] }, { kind: "pipe", type: i1$1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
|
|
1598
1601
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: KeyCloakTemplateComponent, decorators: [{
|
|
1599
1602
|
type: Component,
|
|
1600
1603
|
args: [{ selector: 'c8y-key-cloak-template', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div *ngIf=\"templateModel\">\n <c8y-basic-configuration [templateModel]=\"templateModel\"></c8y-basic-configuration>\n <hr/>\n <c8y-user-id-configuration [templateModel]=\"templateModel\"></c8y-user-id-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-sso-access-mapping\n [templateModel]=\"templateModel\"\n [apps]=\"apps\"\n [groups]=\"groups\">\n </c8y-sso-access-mapping>\n <hr/>\n <c8y-sso-user-data-mapping [templateModel]=\"templateModel\"></c8y-sso-user-data-mapping>\n</div>\n" }]
|
|
@@ -1793,7 +1796,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
1793
1796
|
class LogoutConfigurationComponent {
|
|
1794
1797
|
}
|
|
1795
1798
|
LogoutConfigurationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: LogoutConfigurationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1796
|
-
LogoutConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: LogoutConfigurationComponent, 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: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.DefaultValidationDirective, selector: "[c8yDefaultValidation]", inputs: ["c8yDefaultValidation"] }, { kind: "directive", type:
|
|
1799
|
+
LogoutConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: LogoutConfigurationComponent, 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: i1$1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.DefaultValidationDirective, selector: "[c8yDefaultValidation]", inputs: ["c8yDefaultValidation"] }, { 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: "component", type: i1$1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i1$1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "pipe", type: i1$1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
|
|
1797
1800
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: LogoutConfigurationComponent, decorators: [{
|
|
1798
1801
|
type: Component,
|
|
1799
1802
|
args: [{ selector: 'c8y-sso-logout-configuration', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], 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" }]
|
|
@@ -1886,12 +1889,12 @@ class SsoConfigurationComponent {
|
|
|
1886
1889
|
});
|
|
1887
1890
|
}
|
|
1888
1891
|
}
|
|
1889
|
-
SsoConfigurationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SsoConfigurationComponent, deps: [{ token: SsoConfigurationService }, { token: i1$
|
|
1890
|
-
SsoConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SsoConfigurationComponent, selector: "c8y-sso-configuration", ngImport: i0, template: "<c8y-title>{{ 'Single sign-on' | translate }}</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item [label]=\"'Settings' | translate\" [icon]=\"'cog'\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [icon]=\"'cog'\" [label]=\"'Single sign-on' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\n class=\"btn btn-link\"\n (click)=\"loadSsoConfiguration()\"\n >\n <i c8yIcon=\"refresh\" [ngClass]=\"{ 'icon-spin': reloading$ | async }\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'left'\" itemClass=\"navbar-form hidden-xs\">\n <div title=\"{{ 'Template' | translate }}\" class=\"form-group\">\n <label for=\"template\" class=\"control-label\">\n {{ 'Template' | translate }}\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n *ngIf=\"ssoConfiguration\"\n name=\"template\"\n id=\"template\"\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 class=\"card card--fullpage\" #ssoConfigurationForm=\"ngForm\" novalidate>\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 class=\"card-block p-0\" *ngIf=\"ssoConfiguration\">\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 ></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 ></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 ></c8y-key-cloak-template>\n </div>\n </div>\n <div class=\"card-footer separator\">\n <button\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary\"\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: i1.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId"] }, { kind: "component", type: i1.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i1.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type:
|
|
1892
|
+
SsoConfigurationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SsoConfigurationComponent, deps: [{ token: SsoConfigurationService }, { token: i1$2.ApplicationService }, { token: i1$2.UserGroupService }, { token: i1$1.AlertService }, { token: i1$1.ModalService }, { token: i1$1.LoginService }, { token: i1$1.AppStateService }, { token: i1$1.TenantUiService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1893
|
+
SsoConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SsoConfigurationComponent, selector: "c8y-sso-configuration", ngImport: i0, template: "<c8y-title>{{ 'Single sign-on' | translate }}</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item [label]=\"'Settings' | translate\" [icon]=\"'cog'\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [icon]=\"'cog'\" [label]=\"'Single sign-on' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\n class=\"btn btn-link\"\n (click)=\"loadSsoConfiguration()\"\n >\n <i c8yIcon=\"refresh\" [ngClass]=\"{ 'icon-spin': reloading$ | async }\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'left'\" itemClass=\"navbar-form hidden-xs\">\n <div title=\"{{ 'Template' | translate }}\" class=\"form-group\">\n <label for=\"template\" class=\"control-label\">\n {{ 'Template' | translate }}\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n *ngIf=\"ssoConfiguration\"\n name=\"template\"\n id=\"template\"\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 class=\"card card--fullpage\" #ssoConfigurationForm=\"ngForm\" novalidate>\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 class=\"card-block p-0\" *ngIf=\"ssoConfiguration\">\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 ></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 ></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 ></c8y-key-cloak-template>\n </div>\n </div>\n <div class=\"card-footer separator\">\n <button\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary\"\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: i1$1.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId"] }, { kind: "component", type: i1$1.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i1$1.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "directive", type: i1$1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1$1.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { 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: "component", type: CustomTemplateComponent, selector: "c8y-custom-template" }, { kind: "component", type: KeyCloakTemplateComponent, selector: "c8y-key-cloak-template" }, { kind: "component", type: AadTemplateComponent, selector: "c8y-aad-template" }, { kind: "pipe", type: i1$1.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.KeyValuePipe, name: "keyvalue" }] });
|
|
1891
1894
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SsoConfigurationComponent, decorators: [{
|
|
1892
1895
|
type: Component,
|
|
1893
1896
|
args: [{ selector: 'c8y-sso-configuration', template: "<c8y-title>{{ 'Single sign-on' | translate }}</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item [label]=\"'Settings' | translate\" [icon]=\"'cog'\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [icon]=\"'cog'\" [label]=\"'Single sign-on' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\n class=\"btn btn-link\"\n (click)=\"loadSsoConfiguration()\"\n >\n <i c8yIcon=\"refresh\" [ngClass]=\"{ 'icon-spin': reloading$ | async }\"></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'left'\" itemClass=\"navbar-form hidden-xs\">\n <div title=\"{{ 'Template' | translate }}\" class=\"form-group\">\n <label for=\"template\" class=\"control-label\">\n {{ 'Template' | translate }}\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n *ngIf=\"ssoConfiguration\"\n name=\"template\"\n id=\"template\"\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 class=\"card card--fullpage\" #ssoConfigurationForm=\"ngForm\" novalidate>\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 class=\"card-block p-0\" *ngIf=\"ssoConfiguration\">\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 ></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 ></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 ></c8y-key-cloak-template>\n </div>\n </div>\n <div class=\"card-footer separator\">\n <button\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary\"\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" }]
|
|
1894
|
-
}], ctorParameters: function () { return [{ type: SsoConfigurationService }, { type: i1$
|
|
1897
|
+
}], ctorParameters: function () { return [{ type: SsoConfigurationService }, { type: i1$2.ApplicationService }, { type: i1$2.UserGroupService }, { type: i1$1.AlertService }, { type: i1$1.ModalService }, { type: i1$1.LoginService }, { type: i1$1.AppStateService }, { type: i1$1.TenantUiService }]; } });
|
|
1895
1898
|
|
|
1896
1899
|
class SsoConfigurationGuard {
|
|
1897
1900
|
constructor(ssoConfigurationService) {
|
|
@@ -1996,11 +1999,11 @@ class TabsFactory {
|
|
|
1996
1999
|
return merge([basicSettingsTab$, ssoTab$]).pipe(mergeAll(), toArray());
|
|
1997
2000
|
}
|
|
1998
2001
|
}
|
|
1999
|
-
TabsFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: TabsFactory, deps: [{ token: i1$
|
|
2002
|
+
TabsFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: TabsFactory, deps: [{ token: i1$3.Router }, { token: SsoConfigurationService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2000
2003
|
TabsFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: TabsFactory });
|
|
2001
2004
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: TabsFactory, decorators: [{
|
|
2002
2005
|
type: Injectable
|
|
2003
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
2006
|
+
}], ctorParameters: function () { return [{ type: i1$3.Router }, { type: SsoConfigurationService }]; } });
|
|
2004
2007
|
|
|
2005
2008
|
class NavigationFactory {
|
|
2006
2009
|
constructor(permissions) {
|
|
@@ -2027,11 +2030,11 @@ class NavigationFactory {
|
|
|
2027
2030
|
});
|
|
2028
2031
|
}
|
|
2029
2032
|
}
|
|
2030
|
-
NavigationFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: NavigationFactory, deps: [{ token: i1.Permissions }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2033
|
+
NavigationFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: NavigationFactory, deps: [{ token: i1$1.Permissions }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2031
2034
|
NavigationFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: NavigationFactory });
|
|
2032
2035
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: NavigationFactory, decorators: [{
|
|
2033
2036
|
type: Injectable
|
|
2034
|
-
}], ctorParameters: function () { return [{ type: i1.Permissions }]; } });
|
|
2037
|
+
}], ctorParameters: function () { return [{ type: i1$1.Permissions }]; } });
|
|
2035
2038
|
|
|
2036
2039
|
class AuthConfigurationModule {
|
|
2037
2040
|
}
|