@c8y/ngx-components 1023.17.8 → 1023.17.13
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/index.d.ts +6 -3
- package/auth-configuration/index.d.ts.map +1 -1
- package/echart/index.d.ts.map +1 -1
- package/fesm2022/c8y-ngx-components-auth-configuration.mjs +133 -59
- package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-echart.mjs +14 -5
- package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-events-events-timeline.mjs +2 -2
- package/fesm2022/c8y-ngx-components-events-events-timeline.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs +4 -6
- package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +2 -2
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
- package/locales/de.po +50 -70
- package/locales/zh_TW.po +2 -1
- package/operations/operations-timeline/index.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -14,7 +14,6 @@ import * as i5 from 'ngx-bootstrap/datepicker';
|
|
|
14
14
|
import * as i6 from '@c8y/ngx-components/assets-navigator';
|
|
15
15
|
import { PageChangedEvent } from 'ngx-bootstrap/pagination';
|
|
16
16
|
import { BsModalService, BsModalRef } from 'ngx-bootstrap/modal';
|
|
17
|
-
import { Router } from '@angular/router';
|
|
18
17
|
|
|
19
18
|
interface TenantLoginOption extends Omit<ITenantLoginOption, 'authenticationRestrictions' | 'self' | 'strengthValidity' | 'tfaStrategy' | 'greenMinLength' | 'enforceStrength' | 'strengthValidity' | '_type'> {
|
|
20
19
|
authenticationRestrictions?: AuthenticationRestrictions;
|
|
@@ -416,6 +415,7 @@ declare class SsoConfigurationService {
|
|
|
416
415
|
constructor(loginOptionsService: TenantLoginOptionsService);
|
|
417
416
|
getSsoConfiguration$(): Observable<ITenantLoginOption>;
|
|
418
417
|
save(ssoConfiguration: SsoConfiguration): Promise<_c8y_client.IResult<ITenantLoginOption>>;
|
|
418
|
+
shouldShowTab$(): Observable<boolean>;
|
|
419
419
|
static ɵfac: i0.ɵɵFactoryDeclaration<SsoConfigurationService, never>;
|
|
420
420
|
static ɵprov: i0.ɵɵInjectableDeclaration<SsoConfigurationService>;
|
|
421
421
|
}
|
|
@@ -967,10 +967,13 @@ declare class AuthConfigurationModule {
|
|
|
967
967
|
}
|
|
968
968
|
|
|
969
969
|
declare class AuthConfigurationTabsFactory implements TabFactory {
|
|
970
|
-
router
|
|
970
|
+
private router;
|
|
971
|
+
private tabsService;
|
|
972
|
+
private basicSettingsService;
|
|
971
973
|
private ssoConfigurationService;
|
|
972
|
-
|
|
974
|
+
tabs$: Observable<Tab[]>;
|
|
973
975
|
get(): Observable<Tab[]>;
|
|
976
|
+
listTabs(): Observable<Tab[]>;
|
|
974
977
|
static ɵfac: i0.ɵɵFactoryDeclaration<AuthConfigurationTabsFactory, never>;
|
|
975
978
|
static ɵprov: i0.ɵɵInjectableDeclaration<AuthConfigurationTabsFactory>;
|
|
976
979
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sources":["../../auth-configuration/basic-settings/basic-settings.model.ts","../../auth-configuration/basic-settings/auth-configuration.model.ts","../../auth-configuration/basic-settings/session-configuration.component.ts","../../auth-configuration/basic-settings/login-settings.component.ts","../../auth-configuration/basic-settings/basic-auth-settings.component.ts","../../auth-configuration/basic-settings/tenant-login-option.mapper.ts","../../auth-configuration/basic-settings/auth-configuration.service.ts","../../auth-configuration/basic-settings/auth-configuration.component.ts","../../auth-configuration/basic-settings/tfa-settings.component.ts","../../auth-configuration/basic-settings/basic-settings.module.ts","../../auth-configuration/sso-configuration/template-parts/access-mapping/paginated-list-group.component.ts","../../auth-configuration/sso-configuration/sso-configuration.model.ts","../../auth-configuration/sso-configuration/sso-configuration.service.ts","../../auth-configuration/sso-configuration/sso-configuration.component.ts","../../auth-configuration/sso-configuration/templates/sso-configuration.mapper.ts","../../auth-configuration/sso-configuration/template-parts/request-configuration.model.ts","../../auth-configuration/sso-configuration/template-parts/signature-configuration.model.ts","../../auth-configuration/sso-configuration/template-parts/external-token-config.model.ts","../../auth-configuration/sso-configuration/templates/custom.model.ts","../../auth-configuration/sso-configuration/templates/custom-configuration-mapper.ts","../../auth-configuration/sso-configuration/templates/template.component.ts","../../auth-configuration/sso-configuration/templates/custom-template.component.ts","../../auth-configuration/sso-configuration/templates/key-cloak.model.ts","../../auth-configuration/sso-configuration/templates/key-cloak-configuration-mapper.ts","../../auth-configuration/sso-configuration/templates/key-cloak-template.component.ts","../../auth-configuration/sso-configuration/templates/aad.model.ts","../../auth-configuration/sso-configuration/templates/aad-configuration-mapper.ts","../../auth-configuration/sso-configuration/templates/aad-template.component.ts","../../auth-configuration/sso-configuration/template-parts/basic-configuration.component.ts","../../auth-configuration/sso-configuration/template-parts/request-configuration.component.ts","../../auth-configuration/sso-configuration/template-parts/user-id-configuration.component.ts","../../auth-configuration/sso-configuration/template-parts/user-data-mapping.component.ts","../../auth-configuration/sso-configuration/template-parts/access-mapping/access-mapping.component.ts","../../auth-configuration/sso-configuration/template-parts/access-mapping/dynamic-access-mapping.component.ts","../../auth-configuration/sso-configuration/template-parts/signature-configuration.component.ts","../../auth-configuration/sso-configuration/template-parts/logout-configuration.component.ts","../../auth-configuration/sso-configuration/template-parts/access-mapping/child-predicates.component.ts","../../auth-configuration/sso-configuration/template-parts/access-mapping/inventory-roles-mapping.component.ts","../../auth-configuration/sso-configuration/template-parts/access-mapping/inventory-roles-modal.component.ts","../../auth-configuration/sso-configuration/template-parts/external-token-config.component.ts","../../auth-configuration/sso-configuration/sso-configuration.module.ts","../../auth-configuration/auth-configuration.module.ts","../../auth-configuration/factories/tabs.factory.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sources":["../../auth-configuration/basic-settings/basic-settings.model.ts","../../auth-configuration/basic-settings/auth-configuration.model.ts","../../auth-configuration/basic-settings/session-configuration.component.ts","../../auth-configuration/basic-settings/login-settings.component.ts","../../auth-configuration/basic-settings/basic-auth-settings.component.ts","../../auth-configuration/basic-settings/tenant-login-option.mapper.ts","../../auth-configuration/basic-settings/auth-configuration.service.ts","../../auth-configuration/basic-settings/auth-configuration.component.ts","../../auth-configuration/basic-settings/tfa-settings.component.ts","../../auth-configuration/basic-settings/basic-settings.module.ts","../../auth-configuration/sso-configuration/template-parts/access-mapping/paginated-list-group.component.ts","../../auth-configuration/sso-configuration/sso-configuration.model.ts","../../auth-configuration/sso-configuration/sso-configuration.service.ts","../../auth-configuration/sso-configuration/sso-configuration.component.ts","../../auth-configuration/sso-configuration/templates/sso-configuration.mapper.ts","../../auth-configuration/sso-configuration/template-parts/request-configuration.model.ts","../../auth-configuration/sso-configuration/template-parts/signature-configuration.model.ts","../../auth-configuration/sso-configuration/template-parts/external-token-config.model.ts","../../auth-configuration/sso-configuration/templates/custom.model.ts","../../auth-configuration/sso-configuration/templates/custom-configuration-mapper.ts","../../auth-configuration/sso-configuration/templates/template.component.ts","../../auth-configuration/sso-configuration/templates/custom-template.component.ts","../../auth-configuration/sso-configuration/templates/key-cloak.model.ts","../../auth-configuration/sso-configuration/templates/key-cloak-configuration-mapper.ts","../../auth-configuration/sso-configuration/templates/key-cloak-template.component.ts","../../auth-configuration/sso-configuration/templates/aad.model.ts","../../auth-configuration/sso-configuration/templates/aad-configuration-mapper.ts","../../auth-configuration/sso-configuration/templates/aad-template.component.ts","../../auth-configuration/sso-configuration/template-parts/basic-configuration.component.ts","../../auth-configuration/sso-configuration/template-parts/request-configuration.component.ts","../../auth-configuration/sso-configuration/template-parts/user-id-configuration.component.ts","../../auth-configuration/sso-configuration/template-parts/user-data-mapping.component.ts","../../auth-configuration/sso-configuration/template-parts/access-mapping/access-mapping.component.ts","../../auth-configuration/sso-configuration/template-parts/access-mapping/dynamic-access-mapping.component.ts","../../auth-configuration/sso-configuration/template-parts/signature-configuration.component.ts","../../auth-configuration/sso-configuration/template-parts/logout-configuration.component.ts","../../auth-configuration/sso-configuration/template-parts/access-mapping/child-predicates.component.ts","../../auth-configuration/sso-configuration/template-parts/access-mapping/inventory-roles-mapping.component.ts","../../auth-configuration/sso-configuration/template-parts/access-mapping/inventory-roles-modal.component.ts","../../auth-configuration/sso-configuration/template-parts/external-token-config.component.ts","../../auth-configuration/sso-configuration/sso-configuration.module.ts","../../auth-configuration/auth-configuration.module.ts","../../auth-configuration/factories/tabs.factory.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":[],"mappings":"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"}
|
package/echart/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sources":["../../echart/models/datapoints-graph-widget.model.ts","../../echart/models/chart.model.ts","../../echart/models/svg-icons.model.ts","../../echart/charts.component.ts","../../echart/services/chart-alarms.service.ts","../../echart/services/chart-events.service.ts","../../echart/services/chart-helpers.service.ts","../../echart/select-aggregated-datapoint/select-aggregated-datapoint.component.ts"],"sourcesContent":[null,null,null,null,null,null,null,null],"names":[],"mappings":";;;;;;;;;;;;;;AAmBM;;;;AAKA;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;AAMA;;AAEA;AACA;AACA;AACA;;;AAGA;;;;;;;;;AAUI;;;;;;;;;AASJ;;;AAII;;AAEJ;AACA;;AAGI;;;AAIN;;AAEG;;AAGG;AAIN;AACE;AACA;AACD;AAED;AACM;;AAEL;AAED;;;;AAIM;;;;;;;AAQL;AAED;;;;;AAUE;;;;;AAGD;;AAGC;;AAEA;;AAEE;;AAEF;;;AACD;;;;;;;AAQC;AACA;AACD;AAEK;AACA;AAEA;AAEA;AAEN;;;;AAKA;;;;;;;;;;;;;AAcM;AACA;AAEA;;;;AAKA;;;;;;;;;;AAWL;AAED;;;;;;;;AAUE;AACA;AACD;;AC5MD;;;;;;AAMG;AACH;AACE;;;;AAIA;;;AACD;;;AAIA;;;AAIA;AAEK;AACA;AACJ;AACE;AACD;AACF;;AAGC;AACA;AACD;AAED;AACE;AACA;AACA;AACD;;AC3CD;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACD;AAED;;;;;;;;;;;ACyDA;AA4BE;;AAEA;;;;;;;;;;;;AAYK;AACK;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEV;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAyCA;;;;;AA2HuB;;;AAA4B;AAiDnD;AAOA;AAIA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sources":["../../echart/models/datapoints-graph-widget.model.ts","../../echart/models/chart.model.ts","../../echart/models/svg-icons.model.ts","../../echart/charts.component.ts","../../echart/services/chart-alarms.service.ts","../../echart/services/chart-events.service.ts","../../echart/services/chart-helpers.service.ts","../../echart/select-aggregated-datapoint/select-aggregated-datapoint.component.ts"],"sourcesContent":[null,null,null,null,null,null,null,null],"names":[],"mappings":";;;;;;;;;;;;;;AAmBM;;;;AAKA;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;AAMA;;AAEA;AACA;AACA;AACA;;;AAGA;;;;;;;;;AAUI;;;;;;;;;AASJ;;;AAII;;AAEJ;AACA;;AAGI;;;AAIN;;AAEG;;AAGG;AAIN;AACE;AACA;AACD;AAED;AACM;;AAEL;AAED;;;;AAIM;;;;;;;AAQL;AAED;;;;;AAUE;;;;;AAGD;;AAGC;;AAEA;;AAEE;;AAEF;;;AACD;;;;;;;AAQC;AACA;AACD;AAEK;AACA;AAEA;AAEA;AAEN;;;;AAKA;;;;;;;;;;;;;AAcM;AACA;AAEA;;;;AAKA;;;;;;;;;;AAWL;AAED;;;;;;;;AAUE;AACA;AACD;;AC5MD;;;;;;AAMG;AACH;AACE;;;;AAIA;;;AACD;;;AAIA;;;AAIA;AAEK;AACA;AACJ;AACE;AACD;AACF;;AAGC;AACA;AACD;AAED;AACE;AACA;AACA;AACD;;AC3CD;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACD;AAED;;;;;;;;;;;ACyDA;AA4BE;;AAEA;;;;;;;;;;;;AAYK;AACK;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEV;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAyCA;;;;;AA2HuB;;;AAA4B;AAiDnD;AAOA;AAIA;AAwBA;AA6BA;AAWA;;;AAGG;AACH;AAcA;;;AAGG;AACH;AAmBA;AAeA;AA0BA;;AA8DA;;;AA6MA;AAwDA;AA0CA;AAkBA;AAWA;AAYA;;;AA6BD;;ACn6BD;AAEc;AAAQ;AAEpB;;;;;AAKG;AACG;;;AAqCP;;AC/CD;AAEc;AAAQ;AAEpB;;;;;AAKG;AACG;;;AAuBP;;AChCD;AAEE;;;;AAIG;;;;;;;;;;;AAcH;AAcA;;;AAGD;;ACtBD;;AAqBW;AACC;AAEV;;AAGA;;;AAiBA;;;AAgBD;;;"}
|
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Input, Component, Injectable, EventEmitter, NgModule, Output,
|
|
2
|
+
import { Input, Component, Injectable, EventEmitter, inject, NgModule, Output, ChangeDetectorRef, ElementRef, Renderer2, TemplateRef, ContentChild, ViewChild } from '@angular/core';
|
|
3
|
+
import { map, catchError, tap, switchMap, shareReplay, take, filter, mergeAll, toArray } from 'rxjs/operators';
|
|
3
4
|
import * as i2 from '@c8y/ngx-components';
|
|
4
|
-
import { FormGroupComponent, C8yTranslatePipe, Permissions, C8yTranslateDirective, RequiredInputPlaceholderDirective, MinValidationDirective, MaxValidationDirective, MessagesComponent, MessageDirective, TitleComponent, BreadcrumbComponent, BreadcrumbItemComponent, ActionBarItemComponent, IconDirective, HelpComponent, CoreModule, hookRoute, DefaultValidationDirective, memoize, SelectLegacyComponent, MoNamePipe, EmptyStateComponent, Status, NavigatorNode, hookTab, hookNavigator, hookPatternMessages } from '@c8y/ngx-components';
|
|
5
|
+
import { FormGroupComponent, C8yTranslatePipe, Permissions, C8yTranslateDirective, RequiredInputPlaceholderDirective, MinValidationDirective, MaxValidationDirective, MessagesComponent, MessageDirective, TitleComponent, BreadcrumbComponent, BreadcrumbItemComponent, ActionBarItemComponent, IconDirective, HelpComponent, CoreModule, hookRoute, DefaultValidationDirective, memoize, SelectLegacyComponent, MoNamePipe, EmptyStateComponent, Status, TabsService, NavigatorNode, hookTab, hookNavigator, hookPatternMessages } from '@c8y/ngx-components';
|
|
5
6
|
import * as i1$1 from '@c8y/client';
|
|
6
|
-
import { TenantLoginOptionType, TfaStrategy, GrantType, UserManagementSource } from '@c8y/client';
|
|
7
|
+
import { TenantLoginOptionType, TfaStrategy, GrantType, UserManagementSource, TenantLoginOptionsService } from '@c8y/client';
|
|
7
8
|
import * as i1 from '@angular/forms';
|
|
8
9
|
import { NgForm, ControlContainer, FormsModule } from '@angular/forms';
|
|
9
10
|
import * as i1$2 from '@angular/common';
|
|
10
11
|
import { NgIf, NgFor, NgSwitch, NgSwitchCase, NgClass, AsyncPipe, KeyValuePipe } from '@angular/common';
|
|
11
12
|
import { PopoverDirective, PopoverModule } from 'ngx-bootstrap/popover';
|
|
12
|
-
import {
|
|
13
|
-
import { forkJoin, from, of, BehaviorSubject, defer, throwError, Subject, EMPTY, merge } from 'rxjs';
|
|
13
|
+
import { forkJoin, from, of, BehaviorSubject, defer, throwError, Subject, merge, firstValueFrom, shareReplay as shareReplay$1 } from 'rxjs';
|
|
14
14
|
import { isString, omit, defaults, omitBy, isEmpty, cloneDeep, isFinite, pickBy, identity, map as map$1, pick, findKey, has, get, reduce, pull, defaultsDeep, at, head, reject, isUndefined } from 'lodash-es';
|
|
15
15
|
import { gettext } from '@c8y/ngx-components/gettext';
|
|
16
16
|
import * as i2$1 from '@ngx-translate/core';
|
|
17
|
+
import { HttpStatusCode } from '@angular/common/http';
|
|
17
18
|
import { TooltipDirective, TooltipModule } from 'ngx-bootstrap/tooltip';
|
|
18
19
|
import * as i1$4 from 'ngx-bootstrap/collapse';
|
|
19
20
|
import { CollapseDirective, CollapseModule } from 'ngx-bootstrap/collapse';
|
|
20
|
-
import { HttpStatusCode } from '@angular/common/http';
|
|
21
21
|
import { __decorate, __metadata } from 'tslib';
|
|
22
22
|
import * as i4 from 'ngx-bootstrap/pagination';
|
|
23
23
|
import { PaginationModule } from 'ngx-bootstrap/pagination';
|
|
24
24
|
import * as i1$3 from 'ngx-bootstrap/modal';
|
|
25
25
|
import { AssetSelectorComponent, AssetSelectorModule } from '@c8y/ngx-components/assets-navigator';
|
|
26
26
|
import { BsDatepickerInputDirective, BsDatepickerDirective, BsDatepickerModule } from 'ngx-bootstrap/datepicker';
|
|
27
|
-
import
|
|
27
|
+
import { Router } from '@angular/router';
|
|
28
28
|
|
|
29
29
|
class UserAgent {
|
|
30
30
|
constructor(value) {
|
|
@@ -789,6 +789,47 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
789
789
|
], template: "<c8y-title>{{ 'Authentication' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'cog'\"\n [label]=\"'Settings' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'cog'\"\n [label]=\"'Authentication' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n (click)=\"loadAuthConfig()\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': reloading$ | async }\"\n ></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/docs/authentication/basic-settings/#basic-settings\"></c8y-help>\n\n<form\n class=\"card card--fullpage\"\n #authConfigurationForm=\"ngForm\"\n novalidate\n>\n <div class=\"card-header separator\">\n <div class=\"card-title\">\n {{ 'Authentication' | translate }}\n </div>\n </div>\n <div\n class=\"inner-scroll\"\n *ngIf=\"authConfiguration\"\n >\n <c8y-login-settings [authConfiguration]=\"authConfiguration\"></c8y-login-settings>\n <c8y-basic-auth-settings [authConfiguration]=\"authConfiguration\"></c8y-basic-auth-settings>\n <c8y-session-configuration [authConfiguration]=\"authConfiguration\"></c8y-session-configuration>\n <c8y-auth-tfa [authConfiguration]=\"authConfiguration\"></c8y-auth-tfa>\n </div>\n <div class=\"card-footer separator\">\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n (click)=\"save()\"\n [disabled]=\"!authConfigurationForm.form.valid || authConfigurationForm.form.pristine\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</form>\n" }]
|
|
790
790
|
}], ctorParameters: () => [{ type: AuthConfigurationService }, { type: i2.ModalService }, { type: i2.SimplifiedAuthService }, { type: i2.AlertService }] });
|
|
791
791
|
|
|
792
|
+
class BasicSettingsService {
|
|
793
|
+
constructor() {
|
|
794
|
+
this.loginOptionsService = inject(TenantLoginOptionsService);
|
|
795
|
+
this.showTab$ = defer(() => Promise.all([
|
|
796
|
+
this.loginOptionsService.detail(TenantLoginOptionType.BASIC),
|
|
797
|
+
this.loginOptionsService.detail(TenantLoginOptionType.OAUTH2_INTERNAL)
|
|
798
|
+
])).pipe(map(() => true), catchError(({ res }) => {
|
|
799
|
+
// do not display tab if any login option fails with forbidden error:
|
|
800
|
+
if (res?.status === HttpStatusCode.Forbidden) {
|
|
801
|
+
return of(false);
|
|
802
|
+
}
|
|
803
|
+
return of(true);
|
|
804
|
+
}), shareReplay(1));
|
|
805
|
+
}
|
|
806
|
+
shouldShowTab$() {
|
|
807
|
+
return this.showTab$;
|
|
808
|
+
}
|
|
809
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BasicSettingsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
810
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BasicSettingsService, providedIn: 'root' }); }
|
|
811
|
+
}
|
|
812
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BasicSettingsService, decorators: [{
|
|
813
|
+
type: Injectable,
|
|
814
|
+
args: [{
|
|
815
|
+
providedIn: 'root'
|
|
816
|
+
}]
|
|
817
|
+
}] });
|
|
818
|
+
|
|
819
|
+
class BasicSettingsGuard {
|
|
820
|
+
constructor() {
|
|
821
|
+
this.basicSettingsService = inject(BasicSettingsService);
|
|
822
|
+
}
|
|
823
|
+
canActivate() {
|
|
824
|
+
return this.basicSettingsService.shouldShowTab$();
|
|
825
|
+
}
|
|
826
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BasicSettingsGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
827
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BasicSettingsGuard }); }
|
|
828
|
+
}
|
|
829
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BasicSettingsGuard, decorators: [{
|
|
830
|
+
type: Injectable
|
|
831
|
+
}] });
|
|
832
|
+
|
|
792
833
|
class BasicSettingsModule {
|
|
793
834
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BasicSettingsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
794
835
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: BasicSettingsModule, imports: [CoreModule,
|
|
@@ -801,10 +842,11 @@ class BasicSettingsModule {
|
|
|
801
842
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BasicSettingsModule, providers: [
|
|
802
843
|
AuthConfigurationService,
|
|
803
844
|
TenantLoginOptionMapper,
|
|
845
|
+
BasicSettingsGuard,
|
|
804
846
|
hookRoute({
|
|
805
847
|
path: 'auth-configuration/basic_settings',
|
|
806
848
|
component: AuthConfigurationComponent,
|
|
807
|
-
canActivate: [AuthConfigurationGuard]
|
|
849
|
+
canActivate: [AuthConfigurationGuard, BasicSettingsGuard]
|
|
808
850
|
})
|
|
809
851
|
], imports: [CoreModule,
|
|
810
852
|
PopoverModule,
|
|
@@ -830,10 +872,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
830
872
|
providers: [
|
|
831
873
|
AuthConfigurationService,
|
|
832
874
|
TenantLoginOptionMapper,
|
|
875
|
+
BasicSettingsGuard,
|
|
833
876
|
hookRoute({
|
|
834
877
|
path: 'auth-configuration/basic_settings',
|
|
835
878
|
component: AuthConfigurationComponent,
|
|
836
|
-
canActivate: [AuthConfigurationGuard]
|
|
879
|
+
canActivate: [AuthConfigurationGuard, BasicSettingsGuard]
|
|
837
880
|
})
|
|
838
881
|
]
|
|
839
882
|
}]
|
|
@@ -873,10 +916,10 @@ class SsoConfigurationService {
|
|
|
873
916
|
this.loginOptionsService = loginOptionsService;
|
|
874
917
|
this.ssoConfiguration$ = defer(() => this.loginOptionsService.detail(TenantLoginOptionType.OAUTH2)).pipe(map(res => res.data), catchError(({ res }) => {
|
|
875
918
|
if (res.status === HttpStatusCode.Forbidden)
|
|
876
|
-
return throwError(new Error());
|
|
919
|
+
return throwError(() => new Error());
|
|
877
920
|
else
|
|
878
921
|
return of(this.defaultConfiguration);
|
|
879
|
-
}),
|
|
922
|
+
}), shareReplay({ bufferSize: 1, windowTime: 1000, refCount: true }), take(1));
|
|
880
923
|
this.defaultConfiguration = {
|
|
881
924
|
authorizationRequest: {
|
|
882
925
|
body: '',
|
|
@@ -964,6 +1007,9 @@ class SsoConfigurationService {
|
|
|
964
1007
|
save(ssoConfiguration) {
|
|
965
1008
|
return this.loginOptionsService.save(ssoConfiguration);
|
|
966
1009
|
}
|
|
1010
|
+
shouldShowTab$() {
|
|
1011
|
+
return this.getSsoConfiguration$().pipe(map(() => true), catchError(() => of(false)), shareReplay(1));
|
|
1012
|
+
}
|
|
967
1013
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SsoConfigurationService, deps: [{ token: i1$1.TenantLoginOptionsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
968
1014
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SsoConfigurationService, providedIn: 'root' }); }
|
|
969
1015
|
}
|
|
@@ -2524,18 +2570,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2524
2570
|
}] } });
|
|
2525
2571
|
|
|
2526
2572
|
class SsoConfigurationGuard {
|
|
2527
|
-
constructor(
|
|
2528
|
-
this.ssoConfigurationService =
|
|
2573
|
+
constructor() {
|
|
2574
|
+
this.ssoConfigurationService = inject(SsoConfigurationService);
|
|
2529
2575
|
}
|
|
2530
2576
|
canActivate() {
|
|
2531
|
-
return this.ssoConfigurationService.
|
|
2577
|
+
return this.ssoConfigurationService.shouldShowTab$();
|
|
2532
2578
|
}
|
|
2533
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SsoConfigurationGuard, deps: [
|
|
2579
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SsoConfigurationGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2534
2580
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SsoConfigurationGuard }); }
|
|
2535
2581
|
}
|
|
2536
2582
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SsoConfigurationGuard, decorators: [{
|
|
2537
2583
|
type: Injectable
|
|
2538
|
-
}]
|
|
2584
|
+
}] });
|
|
2539
2585
|
|
|
2540
2586
|
class SsoConfigurationModule {
|
|
2541
2587
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SsoConfigurationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
@@ -2640,65 +2686,79 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2640
2686
|
}] });
|
|
2641
2687
|
|
|
2642
2688
|
class AuthConfigurationTabsFactory {
|
|
2643
|
-
constructor(
|
|
2644
|
-
this.router =
|
|
2645
|
-
this.
|
|
2689
|
+
constructor() {
|
|
2690
|
+
this.router = inject(Router);
|
|
2691
|
+
this.tabsService = inject(TabsService);
|
|
2692
|
+
this.basicSettingsService = inject(BasicSettingsService);
|
|
2693
|
+
this.ssoConfigurationService = inject(SsoConfigurationService);
|
|
2694
|
+
this.tabs$ = defer(() => {
|
|
2695
|
+
const basicSettingsTab$ = this.basicSettingsService.shouldShowTab$().pipe(filter(shouldShow => shouldShow), map(() => ({
|
|
2696
|
+
path: 'auth-configuration/basic_settings',
|
|
2697
|
+
label: gettext('Basic settings'),
|
|
2698
|
+
icon: 'unlock-alt',
|
|
2699
|
+
priority: 1100,
|
|
2700
|
+
orientation: 'horizontal'
|
|
2701
|
+
})));
|
|
2702
|
+
const ssoTab$ = this.ssoConfigurationService.shouldShowTab$().pipe(filter(shouldShow => shouldShow), map(() => ({
|
|
2703
|
+
path: 'auth-configuration/single_sign-on',
|
|
2704
|
+
label: gettext('Single sign-on'),
|
|
2705
|
+
icon: 'sign-in',
|
|
2706
|
+
priority: 1050,
|
|
2707
|
+
orientation: 'horizontal'
|
|
2708
|
+
})));
|
|
2709
|
+
return merge([basicSettingsTab$, ssoTab$]).pipe(mergeAll(), toArray());
|
|
2710
|
+
}).pipe(shareReplay(1));
|
|
2646
2711
|
}
|
|
2647
2712
|
get() {
|
|
2648
2713
|
if (!this.router.url.match(/auth-configuration/g)) {
|
|
2649
2714
|
return of([]);
|
|
2650
2715
|
}
|
|
2651
|
-
|
|
2652
|
-
|
|
2653
|
-
|
|
2654
|
-
|
|
2655
|
-
|
|
2656
|
-
|
|
2657
|
-
});
|
|
2658
|
-
const ssoTab$ = this.ssoConfigurationService.getSsoConfiguration$().pipe(mapTo({
|
|
2659
|
-
path: 'auth-configuration/single_sign-on',
|
|
2660
|
-
label: gettext('Single sign-on'),
|
|
2661
|
-
icon: 'sign-in',
|
|
2662
|
-
priority: 1050,
|
|
2663
|
-
orientation: 'horizontal'
|
|
2664
|
-
}), catchError(() => EMPTY));
|
|
2665
|
-
return merge([basicSettingsTab$, ssoTab$]).pipe(mergeAll(), toArray());
|
|
2666
|
-
}
|
|
2667
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthConfigurationTabsFactory, deps: [{ token: i1$5.Router }, { token: SsoConfigurationService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2716
|
+
return this.tabs$;
|
|
2717
|
+
}
|
|
2718
|
+
listTabs() {
|
|
2719
|
+
return this.tabs$.pipe(map(tabs => this.tabsService.sortTabs(tabs)));
|
|
2720
|
+
}
|
|
2721
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthConfigurationTabsFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2668
2722
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthConfigurationTabsFactory }); }
|
|
2669
2723
|
}
|
|
2670
2724
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthConfigurationTabsFactory, decorators: [{
|
|
2671
2725
|
type: Injectable
|
|
2672
|
-
}]
|
|
2726
|
+
}] });
|
|
2673
2727
|
|
|
2674
2728
|
class AuthConfigurationNavigationFactory {
|
|
2675
|
-
constructor(
|
|
2676
|
-
this.permissions =
|
|
2677
|
-
this.
|
|
2729
|
+
constructor() {
|
|
2730
|
+
this.permissions = inject(Permissions);
|
|
2731
|
+
this.tabsFactory = inject(AuthConfigurationTabsFactory);
|
|
2732
|
+
this.navs$ = defer(async () => {
|
|
2733
|
+
const navs = [];
|
|
2734
|
+
const userHasPermission = this.permissions.hasAnyRole([
|
|
2735
|
+
Permissions.ROLE_TENANT_ADMIN,
|
|
2736
|
+
Permissions.ROLE_TENANT_MANAGEMENT_ADMIN
|
|
2737
|
+
]);
|
|
2738
|
+
const tabs = await firstValueFrom(this.tabsFactory.listTabs());
|
|
2739
|
+
const hasTabs = tabs && tabs.length > 0;
|
|
2740
|
+
if (userHasPermission && hasTabs) {
|
|
2741
|
+
navs.push(new NavigatorNode({
|
|
2742
|
+
label: gettext('Authentication'),
|
|
2743
|
+
icon: 'c8y-shield',
|
|
2744
|
+
path: '/auth-configuration',
|
|
2745
|
+
parent: gettext('Settings'),
|
|
2746
|
+
routerLinkExact: false,
|
|
2747
|
+
priority: 2000
|
|
2748
|
+
}));
|
|
2749
|
+
}
|
|
2750
|
+
return navs;
|
|
2751
|
+
}).pipe(shareReplay$1(1));
|
|
2678
2752
|
}
|
|
2679
2753
|
async get() {
|
|
2680
|
-
|
|
2681
|
-
Permissions.ROLE_TENANT_ADMIN,
|
|
2682
|
-
Permissions.ROLE_TENANT_MANAGEMENT_ADMIN
|
|
2683
|
-
]);
|
|
2684
|
-
if (this.navs.length === 0 && userHasPermission) {
|
|
2685
|
-
this.navs.push(new NavigatorNode({
|
|
2686
|
-
label: gettext('Authentication'),
|
|
2687
|
-
icon: 'c8y-shield',
|
|
2688
|
-
path: '/auth-configuration',
|
|
2689
|
-
parent: gettext('Settings'),
|
|
2690
|
-
routerLinkExact: false,
|
|
2691
|
-
priority: 2000
|
|
2692
|
-
}));
|
|
2693
|
-
}
|
|
2694
|
-
return this.navs;
|
|
2754
|
+
return firstValueFrom(this.navs$);
|
|
2695
2755
|
}
|
|
2696
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthConfigurationNavigationFactory, deps: [
|
|
2756
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthConfigurationNavigationFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2697
2757
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthConfigurationNavigationFactory }); }
|
|
2698
2758
|
}
|
|
2699
2759
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthConfigurationNavigationFactory, decorators: [{
|
|
2700
2760
|
type: Injectable
|
|
2701
|
-
}]
|
|
2761
|
+
}] });
|
|
2702
2762
|
|
|
2703
2763
|
const MESSAGES_AUTH_CONFIGURATION = {
|
|
2704
2764
|
'^The tenant option: configuration/tenant.login.ignore-case cannot be enabled : Username or alias is duplicated when case sensitivity is ignored.$': {
|
|
@@ -2717,12 +2777,19 @@ class AuthConfigurationModule {
|
|
|
2717
2777
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: AuthConfigurationModule, imports: [BasicSettingsModule, SsoConfigurationModule] }); }
|
|
2718
2778
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthConfigurationModule, providers: [
|
|
2719
2779
|
AuthConfigurationGuard,
|
|
2780
|
+
AuthConfigurationTabsFactory,
|
|
2720
2781
|
hookTab(AuthConfigurationTabsFactory),
|
|
2721
2782
|
hookNavigator(AuthConfigurationNavigationFactory),
|
|
2722
2783
|
hookPatternMessages(MESSAGES_AUTH_CONFIGURATION),
|
|
2723
2784
|
hookRoute({
|
|
2724
2785
|
path: 'auth-configuration',
|
|
2725
|
-
redirectTo:
|
|
2786
|
+
redirectTo: () => {
|
|
2787
|
+
const tabsFactory = inject(AuthConfigurationTabsFactory);
|
|
2788
|
+
return tabsFactory.listTabs().pipe(map(tabs => {
|
|
2789
|
+
const firstPath = tabs[0]?.path;
|
|
2790
|
+
return typeof firstPath === 'string' ? firstPath : null;
|
|
2791
|
+
}));
|
|
2792
|
+
},
|
|
2726
2793
|
pathMatch: 'full'
|
|
2727
2794
|
})
|
|
2728
2795
|
], imports: [BasicSettingsModule, SsoConfigurationModule] }); }
|
|
@@ -2733,12 +2800,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2733
2800
|
imports: [BasicSettingsModule, SsoConfigurationModule],
|
|
2734
2801
|
providers: [
|
|
2735
2802
|
AuthConfigurationGuard,
|
|
2803
|
+
AuthConfigurationTabsFactory,
|
|
2736
2804
|
hookTab(AuthConfigurationTabsFactory),
|
|
2737
2805
|
hookNavigator(AuthConfigurationNavigationFactory),
|
|
2738
2806
|
hookPatternMessages(MESSAGES_AUTH_CONFIGURATION),
|
|
2739
2807
|
hookRoute({
|
|
2740
2808
|
path: 'auth-configuration',
|
|
2741
|
-
redirectTo:
|
|
2809
|
+
redirectTo: () => {
|
|
2810
|
+
const tabsFactory = inject(AuthConfigurationTabsFactory);
|
|
2811
|
+
return tabsFactory.listTabs().pipe(map(tabs => {
|
|
2812
|
+
const firstPath = tabs[0]?.path;
|
|
2813
|
+
return typeof firstPath === 'string' ? firstPath : null;
|
|
2814
|
+
}));
|
|
2815
|
+
},
|
|
2742
2816
|
pathMatch: 'full'
|
|
2743
2817
|
})
|
|
2744
2818
|
]
|