@alauda-fe/common 1.4.0 → 1.4.2
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/api/auth-api.service.d.ts +14 -0
- package/api/platform-ui.service.d.ts +1 -0
- package/api/public-api.d.ts +1 -0
- package/array-form-table/form/component.d.ts +7 -3
- package/assets/icons/icon-refresh-drag.svg +1 -0
- package/authorization/authorization.d.ts +27 -0
- package/authorization/constants.d.ts +11 -0
- package/authorization/interceptor.service.d.ts +2 -0
- package/authorization/public-api.d.ts +3 -0
- package/authorization/session-manage.service.d.ts +2 -4
- package/authorization/state.service.d.ts +6 -30
- package/authorization/storage-token.d.ts +4 -10
- package/business/resource-select/exports/project-selector/component.d.ts +1 -0
- package/core/abstract/base-nested-form-control.d.ts +1 -1
- package/core/directives/feature-gate.directive.d.ts +2 -1
- package/core/pipes/minimum-format.pipe.d.ts +1 -1
- package/core/services/feature-gate.service.d.ts +1 -0
- package/core/types/commons.d.ts +2 -0
- package/core/types/k8s/crd.d.ts +64 -0
- package/core/types/resource-definitions.d.ts +3 -3
- package/core/utils/cache-store.d.ts +15 -13
- package/core/utils/common.d.ts +1 -0
- package/core/utils/version.d.ts +1 -1
- package/effect-directive/event.directive.d.ts +36 -0
- package/esm2022/api/auth-api.service.mjs +34 -0
- package/esm2022/api/platform-ui.service.mjs +2 -1
- package/esm2022/api/public-api.mjs +2 -1
- package/esm2022/array-form-table/form/component.mjs +30 -15
- package/esm2022/authorization/authorization.mjs +157 -0
- package/esm2022/authorization/constants.mjs +15 -0
- package/esm2022/authorization/interceptor.service.mjs +32 -10
- package/esm2022/authorization/public-api.mjs +4 -1
- package/esm2022/authorization/session-manage.service.mjs +11 -24
- package/esm2022/authorization/state.service.mjs +46 -140
- package/esm2022/authorization/storage-token.mjs +12 -88
- package/esm2022/business/resource-select/exports/project-selector/component.mjs +14 -6
- package/esm2022/business/resource-select/internals/data-grid/component.mjs +2 -2
- package/esm2022/core/directives/feature-gate.directive.mjs +7 -4
- package/esm2022/core/guards/feature.guard.mjs +3 -2
- package/esm2022/core/pipes/minimum-format.pipe.mjs +4 -3
- package/esm2022/core/services/feature-gate.service.mjs +4 -3
- package/esm2022/core/types/commons.mjs +1 -1
- package/esm2022/core/types/k8s/crd.mjs +8 -1
- package/esm2022/core/types/resource-definitions.mjs +2 -2
- package/esm2022/core/utils/cache-store.mjs +56 -29
- package/esm2022/core/utils/common.mjs +9 -1
- package/esm2022/effect-directive/event.directive.mjs +79 -4
- package/esm2022/k8s-resource-list/footer/component.mjs +7 -5
- package/esm2022/multi-search/multi-search-tags/component.mjs +2 -2
- package/esm2022/multi-search/types.mjs +1 -1
- package/esm2022/page-scaffold/navigation/navconfig-loader/navconfig-loader.service.mjs +2 -2
- package/esm2022/page-scaffold/page-header/account-menu/component/component.mjs +3 -8
- package/esm2022/page-scaffold/page-header/common-layout/product-select/component.mjs +2 -2
- package/esm2022/pod-status/component.mjs +34 -55
- package/esm2022/searchable-selector/component.mjs +2 -2
- package/esm2022/widget/date-range-picker/component.mjs +1 -2
- package/esm2022/widget/status-icon/status-icon.component.mjs +1 -1
- package/multi-search/types.d.ts +1 -0
- package/package.json +1 -1
- package/page-scaffold/page/notices/notice.component.d.ts +1 -1
- package/pod-status/component.d.ts +1 -3
- package/styles/tailwind-preset.scss +1 -1
- package/table/helper.d.ts +1 -1
- package/table/module.d.ts +1 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { KubernetesResourceList, ResourceListParams, RoleTemplate, User, UserBinding, UserRole } from '../core/public-api';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class AuthApiService {
|
|
4
|
+
private http;
|
|
5
|
+
getUserBindingList(params: ResourceListParams): import("rxjs").Observable<KubernetesResourceList<UserBinding>>;
|
|
6
|
+
getUserRoleList(params: {
|
|
7
|
+
users: string;
|
|
8
|
+
project?: string;
|
|
9
|
+
}): import("rxjs").Observable<KubernetesResourceList<UserRole>>;
|
|
10
|
+
getRoleTemplateList(params: ResourceListParams): import("rxjs").Observable<KubernetesResourceList<RoleTemplate>>;
|
|
11
|
+
getUser(name: string): import("rxjs").Observable<User>;
|
|
12
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AuthApiService, never>;
|
|
13
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AuthApiService>;
|
|
14
|
+
}
|
|
@@ -39,6 +39,7 @@ export declare class PlatformUIService {
|
|
|
39
39
|
getBackgroundImages(): import("rxjs").Observable<{
|
|
40
40
|
topImage: string;
|
|
41
41
|
bottomImage: string;
|
|
42
|
+
hasCustomized: boolean;
|
|
42
43
|
}>;
|
|
43
44
|
static ɵfac: i0.ɵɵFactoryDeclaration<PlatformUIService, never>;
|
|
44
45
|
static ɵprov: i0.ɵɵInjectableDeclaration<PlatformUIService>;
|
package/api/public-api.d.ts
CHANGED
|
@@ -65,9 +65,13 @@ export declare class ArrayFormTableComponent implements OnDestroy {
|
|
|
65
65
|
*/
|
|
66
66
|
zeroStateTemplate: TemplateRef<any>;
|
|
67
67
|
/**
|
|
68
|
-
*
|
|
68
|
+
* 行之间的分隔区域自定义模板
|
|
69
69
|
*/
|
|
70
70
|
separatorTemplate: TemplateRef<any>;
|
|
71
|
+
/**
|
|
72
|
+
* 行之间的分隔区域,默认关闭
|
|
73
|
+
*/
|
|
74
|
+
rowSeparator: boolean;
|
|
71
75
|
ngFormGroupDirective: FormGroupDirective;
|
|
72
76
|
rows: any[];
|
|
73
77
|
resourceName: string;
|
|
@@ -78,7 +82,7 @@ export declare class ArrayFormTableComponent implements OnDestroy {
|
|
|
78
82
|
addDisabled: boolean | '';
|
|
79
83
|
actionColumnDivider: boolean | '';
|
|
80
84
|
showZeroState: boolean;
|
|
81
|
-
get formDirective():
|
|
85
|
+
get formDirective(): NgForm | FormGroupDirective;
|
|
82
86
|
/**
|
|
83
87
|
* 自定义是否展示错误内容
|
|
84
88
|
* 例如 control 是 FormGroup,只有在内部子 control 错误时才需要展示错误内容
|
|
@@ -98,5 +102,5 @@ export declare class ArrayFormTableComponent implements OnDestroy {
|
|
|
98
102
|
ngOnDestroy(): void;
|
|
99
103
|
shouldShowRowError: (control: AbstractControl) => import("rxjs").Observable<boolean>;
|
|
100
104
|
static ɵfac: i0.ɵɵFactoryDeclaration<ArrayFormTableComponent, never>;
|
|
101
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ArrayFormTableComponent, "acl-array-form-table", never, { "rows": { "alias": "rows"; "required": false; }; "resourceName": { "alias": "resourceName"; "required": false; }; "resourceNameTranslated": { "alias": "resourceNameTranslated"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "addDisabled": { "alias": "addDisabled"; "required": false; }; "actionColumnDivider": { "alias": "actionColumnDivider"; "required": false; }; "showZeroState": { "alias": "showZeroState"; "required": false; }; "showRowError": { "alias": "showRowError"; "required": false; }; "rowBackgroundColorFn": { "alias": "rowBackgroundColorFn"; "required": false; }; "minRow": { "alias": "minRow"; "required": false; }; "minRowTooltip": { "alias": "minRowTooltip"; "required": false; }; "maxRow": { "alias": "maxRow"; "required": false; }; "maxRowTooltip": { "alias": "maxRowTooltip"; "required": false; }; }, { "add": "add"; "remove": "remove"; }, ["headerTemplate", "rowErrorTemplate", "rowControlTemplate", "footerTemplate", "zeroStateTemplate", "separatorTemplate", "ngFormGroupDirective", "rowTemplates"], never, true, never>;
|
|
105
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ArrayFormTableComponent, "acl-array-form-table", never, { "rowSeparator": { "alias": "rowSeparator"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "resourceName": { "alias": "resourceName"; "required": false; }; "resourceNameTranslated": { "alias": "resourceNameTranslated"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "addDisabled": { "alias": "addDisabled"; "required": false; }; "actionColumnDivider": { "alias": "actionColumnDivider"; "required": false; }; "showZeroState": { "alias": "showZeroState"; "required": false; }; "showRowError": { "alias": "showRowError"; "required": false; }; "rowBackgroundColorFn": { "alias": "rowBackgroundColorFn"; "required": false; }; "minRow": { "alias": "minRow"; "required": false; }; "minRowTooltip": { "alias": "minRowTooltip"; "required": false; }; "maxRow": { "alias": "maxRow"; "required": false; }; "maxRowTooltip": { "alias": "maxRowTooltip"; "required": false; }; }, { "add": "add"; "remove": "remove"; }, ["headerTemplate", "rowErrorTemplate", "rowControlTemplate", "footerTemplate", "zeroStateTemplate", "separatorTemplate", "ngFormGroupDirective", "rowTemplates"], never, true, never>;
|
|
102
106
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><rect width="20" height="20" rx="1"/><path d="M3.652 6.8h1.536c.106 0 .192.086.192.192v1.536a.192.192 0 0 1-.192.192H3.652a.192.192 0 0 1-.192-.192V6.992c0-.106.086-.192.192-.192Zm3.72 0h1.536c.106 0 .192.086.192.192v1.536a.192.192 0 0 1-.192.192H7.372a.192.192 0 0 1-.192-.192V6.992c0-.106.086-.192.192-.192Zm3.72 0h1.536c.106 0 .192.086.192.192v1.536a.192.192 0 0 1-.192.192h-1.536a.192.192 0 0 1-.192-.192V6.992c0-.106.086-.192.192-.192Zm3.72 0h1.536c.106 0 .192.086.192.192v1.536a.192.192 0 0 1-.192.192h-1.536a.192.192 0 0 1-.192-.192V6.992c0-.106.086-.192.192-.192Zm-11.16 4.48h1.536c.106 0 .192.086.192.192v1.536a.192.192 0 0 1-.192.192H3.652a.192.192 0 0 1-.192-.192v-1.536c0-.106.086-.192.192-.192Zm3.72 0h1.536c.106 0 .192.086.192.192v1.536a.192.192 0 0 1-.192.192H7.372a.192.192 0 0 1-.192-.192v-1.536c0-.106.086-.192.192-.192Zm3.72 0h1.536c.106 0 .192.086.192.192v1.536a.192.192 0 0 1-.192.192h-1.536a.192.192 0 0 1-.192-.192v-1.536c0-.106.086-.192.192-.192Zm3.72 0h1.536c.106 0 .192.086.192.192v1.536a.192.192 0 0 1-.192.192h-1.536a.192.192 0 0 1-.192-.192v-1.536c0-.106.086-.192.192-.192Z" fill="#646669"/></g></svg>
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { AccountInfo } from '../page-scaffold/public-api';
|
|
2
|
+
export interface AuthorizationState {
|
|
3
|
+
expireAt?: string;
|
|
4
|
+
issuedAt?: string;
|
|
5
|
+
state?: string;
|
|
6
|
+
authUrl?: string;
|
|
7
|
+
logoutUrl?: string;
|
|
8
|
+
info?: AccountInfo;
|
|
9
|
+
}
|
|
10
|
+
export interface TokenResponse {
|
|
11
|
+
token_storage: string;
|
|
12
|
+
token_type: string;
|
|
13
|
+
expire_at: string;
|
|
14
|
+
issued_at: string;
|
|
15
|
+
id_token?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function fetchAuthorizationState(): Promise<AuthorizationState>;
|
|
18
|
+
export declare function getAuthorizationState(): AuthorizationState;
|
|
19
|
+
export declare function initAuthorizationState(state: AuthorizationState): void;
|
|
20
|
+
export declare function attachAuthorizationHeader(): {
|
|
21
|
+
Authorization?: string;
|
|
22
|
+
};
|
|
23
|
+
export declare function logoutAudit(): Promise<{
|
|
24
|
+
logout_redirect_url?: string;
|
|
25
|
+
}>;
|
|
26
|
+
export declare function logout(returnCurrentPage?: boolean | string): void;
|
|
27
|
+
export declare function redirectSSOEntry(entry: string): string;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const STORAGE_TYPE_KEY = "token_storage";
|
|
2
|
+
export declare const CODE_KEY = "code";
|
|
3
|
+
export declare const ID_TOKEN_KEY = "id_token";
|
|
4
|
+
export declare const LOADING_CACHE = 15000;
|
|
5
|
+
export declare const LOGIN_API = "/console/api/v2/token/login";
|
|
6
|
+
export declare const LOGOUT_API = "/console/api/v2/token/logout";
|
|
7
|
+
export declare const CALLBACK_API = "/console/api/v2/token/callback";
|
|
8
|
+
export declare const TOKEN_REFRESH_API = "/console/api/v2/token/refresh";
|
|
9
|
+
export declare const TOKEN_INFO_API = "/console/api/v2/token/info";
|
|
10
|
+
export declare const EXTERNAL_REDIRECT_API = "/console/api/v2/token/redirect";
|
|
11
|
+
export declare const REDIRECT_URIS: Set<string>;
|
|
@@ -15,9 +15,11 @@ export declare class AuthorizationInterceptorService implements HttpInterceptor
|
|
|
15
15
|
private readonly dialog;
|
|
16
16
|
private readonly sessionManage;
|
|
17
17
|
private auth;
|
|
18
|
+
private sessionInvalidConfirm;
|
|
18
19
|
constructor(anonymousApis: Array<string | RegExp>, apiGateway: ApiGatewayService, injector: Injector, dialog: DialogService, sessionManage: SessionManageService);
|
|
19
20
|
intercept(req: HttpRequest<unknown>, next: HttpHandler): import("rxjs").Observable<import("@angular/common/http").HttpEvent<any>>;
|
|
20
21
|
isConsoleRelative(url: string): boolean;
|
|
22
|
+
private cloneReq;
|
|
21
23
|
private retryAuth;
|
|
22
24
|
private getAuth;
|
|
23
25
|
private needAuthorization;
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
import { HttpClient } from '@angular/common/http';
|
|
2
2
|
import { PageVisibilityService } from '../api/page-visibility.service';
|
|
3
|
-
import { K8sApiService } from '../public-api';
|
|
4
3
|
import * as i0 from "@angular/core";
|
|
4
|
+
export declare const HEARTBEAT_POLLING = 15000;
|
|
5
5
|
export declare const SESSION_MANAGE_KEY = "session-manage-construct-time";
|
|
6
6
|
export declare class SessionManageService {
|
|
7
7
|
private readonly http;
|
|
8
8
|
private readonly pageVisibility;
|
|
9
|
-
private readonly k8sApi;
|
|
10
9
|
private readonly subscription;
|
|
11
10
|
private readonly visibility$;
|
|
12
|
-
private readonly policy$;
|
|
13
11
|
private readonly userAction$;
|
|
14
|
-
constructor(http: HttpClient, pageVisibility: PageVisibilityService,
|
|
12
|
+
constructor(http: HttpClient, pageVisibility: PageVisibilityService, disabled: boolean);
|
|
15
13
|
complete(): void;
|
|
16
14
|
static ɵfac: i0.ɵɵFactoryDeclaration<SessionManageService, never>;
|
|
17
15
|
static ɵprov: i0.ɵɵInjectableDeclaration<SessionManageService>;
|
|
@@ -1,45 +1,21 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
2
|
import { AccountInfo } from '../page-scaffold/public-api';
|
|
3
|
+
import { logout, TokenResponse } from './authorization';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
|
-
export interface AuthorizationState {
|
|
5
|
-
expireAt?: string;
|
|
6
|
-
issuedAt?: string;
|
|
7
|
-
state?: string;
|
|
8
|
-
authUrl?: string;
|
|
9
|
-
logoutUrl?: string;
|
|
10
|
-
info?: AccountInfo;
|
|
11
|
-
}
|
|
12
|
-
export interface TokenResponse {
|
|
13
|
-
token_storage: StorageType;
|
|
14
|
-
token_type: string;
|
|
15
|
-
expire_at: string;
|
|
16
|
-
issued_at: string;
|
|
17
|
-
}
|
|
18
|
-
export type StorageType = 'local' | 'session';
|
|
19
|
-
export declare const STORAGE_TYPE_KEY = "token_storage";
|
|
20
|
-
export declare const CODE_KEY = "code";
|
|
21
|
-
export declare const ID_TOKEN = "id_token";
|
|
22
5
|
export declare class AuthorizationStateService {
|
|
23
6
|
private readonly http;
|
|
24
7
|
private readonly state$;
|
|
25
8
|
private checkTokenCache$;
|
|
26
9
|
private refreshTokenCache$;
|
|
27
|
-
stateSnapshot: AuthorizationState;
|
|
28
10
|
payloadSnapshot: AccountInfo;
|
|
29
|
-
logout
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
refreshToken(): Observable<
|
|
11
|
+
logout: typeof logout;
|
|
12
|
+
constructor();
|
|
13
|
+
logoutWithAudit(): void;
|
|
14
|
+
refreshToken(): Observable<TokenResponse>;
|
|
33
15
|
checkToken(): Observable<unknown>;
|
|
34
16
|
getTokenPayload<T>(): Observable<T>;
|
|
35
17
|
getAccountInfo(): Observable<any>;
|
|
36
|
-
|
|
37
|
-
private getExistedToken;
|
|
38
|
-
private getTokenFromLocal;
|
|
39
|
-
private getTokenByCode;
|
|
40
|
-
private getCookieByToken;
|
|
41
|
-
private getParams;
|
|
18
|
+
getTokenByStorage(): string;
|
|
42
19
|
static ɵfac: i0.ɵɵFactoryDeclaration<AuthorizationStateService, never>;
|
|
43
20
|
static ɵprov: i0.ɵɵInjectableDeclaration<AuthorizationStateService>;
|
|
44
21
|
}
|
|
45
|
-
export declare function redirectSSOEntry(entry: string): string;
|
|
@@ -1,11 +1,5 @@
|
|
|
1
|
-
import { StorageType } from './state.service';
|
|
2
|
-
export interface StorageToken {
|
|
3
|
-
storageType: StorageType;
|
|
4
|
-
idToken: string;
|
|
5
|
-
refreshToken: string;
|
|
6
|
-
}
|
|
7
|
-
export declare function readStorageType(): StorageType;
|
|
8
1
|
export declare function cleanStorageToken(): void;
|
|
9
|
-
export declare function writeStorageToken(token:
|
|
10
|
-
export declare function readStorageToken():
|
|
11
|
-
export declare function
|
|
2
|
+
export declare function writeStorageToken(token: string): void;
|
|
3
|
+
export declare function readStorageToken(): string;
|
|
4
|
+
export declare function refreshStorageAliveRecord(): void;
|
|
5
|
+
export declare function readStorageAliveRecord(): number;
|
|
@@ -17,6 +17,7 @@ export declare class ProjectSelectorComponent implements AfterViewInit {
|
|
|
17
17
|
displayFields: ConfigurableField[];
|
|
18
18
|
isActive: boolean;
|
|
19
19
|
popupRef: ResourceSelectorPopupRef;
|
|
20
|
+
destroy$: import("rxjs").Observable<void>;
|
|
20
21
|
constructor(popupService: ResourceSelectorPopupService, cdr: ChangeDetectorRef, elementRef: ElementRef, auth: AuthorizationStateService);
|
|
21
22
|
ngAfterViewInit(): void;
|
|
22
23
|
openPopup(): void;
|
|
@@ -21,7 +21,7 @@ export declare class BaseNestedFormControl<V, M = V> implements AfterViewInit, O
|
|
|
21
21
|
protected asyncValidator: boolean;
|
|
22
22
|
protected cdr: ChangeDetectorRef;
|
|
23
23
|
protected destroy$$: Subject<void>;
|
|
24
|
-
protected hostForm:
|
|
24
|
+
protected hostForm: NgForm | FormGroupDirective;
|
|
25
25
|
constructor();
|
|
26
26
|
ngAfterViewInit(): void;
|
|
27
27
|
ngOnDestroy(): void;
|
|
@@ -17,6 +17,7 @@ export declare class FeatureGateDirective implements OnInit, OnDestroy {
|
|
|
17
17
|
private readonly crd;
|
|
18
18
|
featureName: string;
|
|
19
19
|
cluster: string;
|
|
20
|
+
negate: boolean;
|
|
20
21
|
set then(templateRef: TemplateRef<void>);
|
|
21
22
|
set else(templateRef: TemplateRef<void>);
|
|
22
23
|
private thenTemplateRef;
|
|
@@ -26,5 +27,5 @@ export declare class FeatureGateDirective implements OnInit, OnDestroy {
|
|
|
26
27
|
ngOnInit(): void;
|
|
27
28
|
ngOnDestroy(): void;
|
|
28
29
|
static ɵfac: i0.ɵɵFactoryDeclaration<FeatureGateDirective, never>;
|
|
29
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<FeatureGateDirective, "[aclFeatureGate]", never, { "featureName": { "alias": "aclFeatureGate"; "required": false; }; "cluster": { "alias": "aclFeatureGateCluster"; "required": false; }; "then": { "alias": "aclFeatureGateThen"; "required": false; }; "else": { "alias": "aclFeatureGateElse"; "required": false; }; }, {}, never, never, true, never>;
|
|
30
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<FeatureGateDirective, "[aclFeatureGate]", never, { "featureName": { "alias": "aclFeatureGate"; "required": false; }; "cluster": { "alias": "aclFeatureGateCluster"; "required": false; }; "negate": { "alias": "aclFeatureGateNegate"; "required": false; }; "then": { "alias": "aclFeatureGateThen"; "required": false; }; "else": { "alias": "aclFeatureGateElse"; "required": false; }; }, {}, never, never, true, never>;
|
|
30
31
|
}
|
|
@@ -4,7 +4,7 @@ import * as i0 from "@angular/core";
|
|
|
4
4
|
export declare class MinimumFormatPipe implements PipeTransform {
|
|
5
5
|
private readonly decimal;
|
|
6
6
|
constructor(decimal: DecimalPipe);
|
|
7
|
-
transform(value: number | string): string;
|
|
7
|
+
transform(value: number | string, decimalPlaces?: number): string;
|
|
8
8
|
static ɵfac: i0.ɵɵFactoryDeclaration<MinimumFormatPipe, never>;
|
|
9
9
|
static ɵpipe: i0.ɵɵPipeDeclaration<MinimumFormatPipe, "aclMinimumFormat", true>;
|
|
10
10
|
}
|
|
@@ -16,6 +16,7 @@ export declare class FeatureGateService {
|
|
|
16
16
|
* @param cluster - check gate for specified cluster
|
|
17
17
|
*/
|
|
18
18
|
isEnabled(gateName: string, cluster?: string): Observable<boolean>;
|
|
19
|
+
isNegateEnabled(gateName: string, cluster?: string): Observable<boolean>;
|
|
19
20
|
/**
|
|
20
21
|
* filter list with gate, send items without feature gate as begin push (can skip by passing `skipNoFeatureGatePush` argument with true)
|
|
21
22
|
* @param items - list need filter
|
package/core/types/commons.d.ts
CHANGED
|
@@ -8,6 +8,8 @@ export interface Environments {
|
|
|
8
8
|
LABEL_BASE_DOMAIN?: string;
|
|
9
9
|
LOGO_URL?: string;
|
|
10
10
|
INNER_PROJECT_NS_PREFIX?: string;
|
|
11
|
+
CPAAS_SESSION_SWITCH?: 'on' | 'off';
|
|
12
|
+
CLOSE_BROWSER_END_SESSION?: string;
|
|
11
13
|
}
|
|
12
14
|
export interface ResourceListParams extends StringMap {
|
|
13
15
|
limit?: string;
|
package/core/types/k8s/crd.d.ts
CHANGED
|
@@ -639,4 +639,68 @@ export interface UserBindingSpec {
|
|
|
639
639
|
namespace?: string;
|
|
640
640
|
}>;
|
|
641
641
|
}
|
|
642
|
+
export interface RoleRule {
|
|
643
|
+
module: string;
|
|
644
|
+
functionResourceRef: string;
|
|
645
|
+
functionMetadataName?: string;
|
|
646
|
+
verbs: string[];
|
|
647
|
+
}
|
|
648
|
+
export interface RoleCustomRule {
|
|
649
|
+
apiGroup: string;
|
|
650
|
+
resources: string[];
|
|
651
|
+
verbs: string[];
|
|
652
|
+
}
|
|
653
|
+
export interface RoleTemplateSpec {
|
|
654
|
+
rules?: RoleRule[];
|
|
655
|
+
customRules?: RoleCustomRule[];
|
|
656
|
+
}
|
|
657
|
+
export interface RoleTemplate extends KubernetesResource {
|
|
658
|
+
spec?: RoleTemplateSpec;
|
|
659
|
+
}
|
|
660
|
+
export interface UserRoleNamespace {
|
|
661
|
+
namespace: string;
|
|
662
|
+
cluster: string;
|
|
663
|
+
}
|
|
664
|
+
export interface UserRole extends KubernetesResource {
|
|
665
|
+
name?: string;
|
|
666
|
+
roles?: string[];
|
|
667
|
+
namespaces?: Record<string, UserRoleNamespace[]>;
|
|
668
|
+
}
|
|
669
|
+
export interface User extends KubernetesResource {
|
|
670
|
+
spec?: UserSpec;
|
|
671
|
+
}
|
|
672
|
+
export interface UserSpec {
|
|
673
|
+
connector_name?: string;
|
|
674
|
+
connector_type?: string;
|
|
675
|
+
email?: string;
|
|
676
|
+
mail?: string;
|
|
677
|
+
groups?: string[];
|
|
678
|
+
is_admin?: boolean;
|
|
679
|
+
valid?: boolean;
|
|
680
|
+
username?: string;
|
|
681
|
+
old_password?: string;
|
|
682
|
+
password?: string;
|
|
683
|
+
last_login_time?: string;
|
|
684
|
+
login_failure_times?: number;
|
|
685
|
+
state?: UserState;
|
|
686
|
+
is_disabled?: boolean;
|
|
687
|
+
expired?: {
|
|
688
|
+
begin: string;
|
|
689
|
+
end: string;
|
|
690
|
+
};
|
|
691
|
+
mobile?: string;
|
|
692
|
+
webhookType?: WebhookType;
|
|
693
|
+
webhookUrl?: string;
|
|
694
|
+
ids?: Array<{
|
|
695
|
+
type: string;
|
|
696
|
+
id: string;
|
|
697
|
+
}>;
|
|
698
|
+
}
|
|
699
|
+
export declare enum UserState {
|
|
700
|
+
ACTIVE = "active",
|
|
701
|
+
LOCKED = "locked",
|
|
702
|
+
INVALID = "invalid",
|
|
703
|
+
DELETED = "deleted"
|
|
704
|
+
}
|
|
705
|
+
export type WebhookType = 'Webhook' | 'DingTalk' | 'WeChat';
|
|
642
706
|
export {};
|
|
@@ -336,7 +336,7 @@ export declare const COMMON_RESOURCE_DEFINITIONS: {
|
|
|
336
336
|
readonly apiVersion: string;
|
|
337
337
|
readonly apiGroup: string;
|
|
338
338
|
};
|
|
339
|
-
readonly
|
|
339
|
+
readonly USER_BINDING: {
|
|
340
340
|
readonly type: string;
|
|
341
341
|
readonly apiGroup: string;
|
|
342
342
|
readonly apiVersion: string;
|
|
@@ -447,7 +447,7 @@ export declare const RESOURCE_TYPES: {
|
|
|
447
447
|
readonly PRODUCT_DOCS_ENTRY: "PRODUCT_DOCS_ENTRY";
|
|
448
448
|
readonly SERVICEMESH_GROUP: "SERVICEMESH_GROUP";
|
|
449
449
|
readonly CLUSTER_MODULE: "CLUSTER_MODULE";
|
|
450
|
-
readonly
|
|
450
|
+
readonly USER_BINDING: "USER_BINDING";
|
|
451
451
|
readonly BATCH_ACTION: "BATCH_ACTION";
|
|
452
452
|
readonly EVENT: "EVENT";
|
|
453
453
|
readonly SERVICE_MONITOR: "SERVICE_MONITOR";
|
|
@@ -455,7 +455,7 @@ export declare const RESOURCE_TYPES: {
|
|
|
455
455
|
readonly ARGOCD_APPLICATION_SET: "ARGOCD_APPLICATION_SET";
|
|
456
456
|
readonly ARGOCD_APPLICATION: "ARGOCD_APPLICATION";
|
|
457
457
|
};
|
|
458
|
-
export declare const getYamlApiVersion: (definition: "ALAUDA_LOADBALANCER2" | "ALB2" | "HELM_REQUEST" | "HELM_REQUEST_V1" | "DEPLOYMENT" | "FRONTEND" | "RULE" | "POD" | "PODS_EXEC" | "PODS_ROOT_EXEC" | "CONFIG_MAP" | "ALERT_TEMPLATE" | "APPLICATION" | "APPLICATION_HISTORY" | "CLUSTER" | "CLUSTER_VIEW" | "DAEMON_SET" | "STATEFUL_SET" | "DOMAIN" | "FEATURE" | "ALAUDA_FEATURE_GATE" | "CLUSTER_ALAUDA_FEATURE_GATE" | "HORIZONTAL_POD_AUTOSCALER" | "LOG" | "
|
|
458
|
+
export declare const getYamlApiVersion: (definition: "PROJECT" | "ALAUDA_LOADBALANCER2" | "ALB2" | "HELM_REQUEST" | "HELM_REQUEST_V1" | "DEPLOYMENT" | "FRONTEND" | "RULE" | "POD" | "PODS_EXEC" | "PODS_ROOT_EXEC" | "CONFIG_MAP" | "ALERT_TEMPLATE" | "APPLICATION" | "APPLICATION_HISTORY" | "CLUSTER" | "CLUSTER_VIEW" | "DAEMON_SET" | "STATEFUL_SET" | "DOMAIN" | "FEATURE" | "ALAUDA_FEATURE_GATE" | "CLUSTER_ALAUDA_FEATURE_GATE" | "HORIZONTAL_POD_AUTOSCALER" | "LOG" | "PROMETHEUS_RULE" | "ALERT_HISTORY" | "SELF_SUBJECT_ACCESS_REVIEW" | "VIEW" | "SERVICE" | "LIMIT_RANGE" | "SECRET" | "PRODUCT" | "CRON_JOB" | "ADVANCED_CRON_JOB" | "JOB" | "INGRESS" | "PERSISTENT_VOLUME_CLAIM" | "NAMESPACE" | "NODE" | "NODE_METRICS" | "PV" | "CRD" | "CHART_REPO" | "CHART" | "NETWORK_POLICY" | "SERVICE_ACCOUNT" | "REPLICA_SET" | "POD_SECURITY_POLICY" | "NAMESPACE_OVERVIEW" | "CSP" | "RESOURCE_QUOTA" | "CLUSTER_NETWORK_POLICY" | "VIRTUAL_MACHINE" | "VIRTUAL_MACHINE_INSTANCE" | "VIRTUAL_MACHINE_POOL" | "PROJECT_QUOTA" | "TKE_CLUSTER" | "TKE_MACHINE" | "MACHINE" | "NODE_GROUP" | "CLUSTERSERVICEVERSION" | "TENANT" | "SUBSCRIPTION" | "PACKAGE_MANIFEST" | "BUCKET_CLASS" | "PRODUCT_CONFIG" | "STORAGE_CLASS" | "VOLUME_SNAPSHOT_CLASS" | "PRODUCT_BASE" | "MODULE_INFO" | "PRODUCT_ENTRY" | "PRODUCT_DOCS_ENTRY" | "SERVICEMESH_GROUP" | "CLUSTER_MODULE" | "USER_BINDING" | "BATCH_ACTION" | "EVENT" | "SERVICE_MONITOR" | "OAM_APPLICATION" | "ARGOCD_APPLICATION_SET" | "ARGOCD_APPLICATION" | {
|
|
459
459
|
apiGroup: string;
|
|
460
460
|
type: string;
|
|
461
461
|
} | {
|
|
@@ -1,33 +1,35 @@
|
|
|
1
1
|
import { MonoTypeOperatorFunction, Observable } from 'rxjs';
|
|
2
|
-
export declare class CacheStore<
|
|
2
|
+
export declare class CacheStore<P, V> {
|
|
3
3
|
private readonly fetcher;
|
|
4
|
-
private readonly idGenerator;
|
|
5
4
|
private readonly share;
|
|
5
|
+
private readonly validator;
|
|
6
6
|
private readonly store;
|
|
7
|
-
constructor({
|
|
7
|
+
constructor({ fetcher, share, validator }: CacheStoreOptions<P, V>);
|
|
8
8
|
fetchState(params: P): Observable<CacheLoadState<V>>;
|
|
9
9
|
fetch(params: P): Observable<V>;
|
|
10
10
|
refetch(params: P): void;
|
|
11
11
|
refetchAll(): void;
|
|
12
|
-
|
|
12
|
+
get(params: P): Cache<V>;
|
|
13
13
|
has(params: P): boolean;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
delete(params: P): void;
|
|
15
|
+
clear(): void;
|
|
16
|
+
forEach: (callbackfn: (value: Cache<V>, key: P, map: Map<P, Cache<V>>) => void, thisArg?: any) => void;
|
|
17
|
+
entries: () => IterableIterator<[P, Cache<V>]>;
|
|
18
|
+
values: () => IterableIterator<Cache<V>>;
|
|
19
|
+
keys: () => IterableIterator<P>;
|
|
18
20
|
}
|
|
19
|
-
export interface CacheStoreOptions<
|
|
21
|
+
export interface CacheStoreOptions<P, V> {
|
|
20
22
|
fetcher: (params: P) => Observable<V>;
|
|
21
|
-
idGenerator?: (params: P) => K;
|
|
22
23
|
share?: <T>() => MonoTypeOperatorFunction<T>;
|
|
24
|
+
validator?: (loadState: CacheLoadState<V>) => boolean;
|
|
23
25
|
}
|
|
24
26
|
export interface CacheLoadState<V> {
|
|
25
27
|
state: 'loading' | 'loaded' | 'loadFailed';
|
|
26
28
|
result?: V;
|
|
27
29
|
error?: unknown;
|
|
28
30
|
}
|
|
29
|
-
export interface Cache<
|
|
30
|
-
params: P;
|
|
31
|
-
refetch: () => void;
|
|
31
|
+
export interface Cache<V> {
|
|
32
32
|
loadState: Observable<CacheLoadState<V>>;
|
|
33
|
+
refetch: () => void;
|
|
34
|
+
finish: () => void;
|
|
33
35
|
}
|
package/core/utils/common.d.ts
CHANGED
|
@@ -56,3 +56,4 @@ export declare const parseImageAddress: (addr: string) => {
|
|
|
56
56
|
};
|
|
57
57
|
export declare const setWindowsXtermTools: (xterm: Terminal) => void;
|
|
58
58
|
export declare const clearWindowsXtermTools: () => void;
|
|
59
|
+
export declare const buildUrl: (baseUri: string, params?: Record<string, string | boolean>) => string;
|
package/core/utils/version.d.ts
CHANGED
|
@@ -36,4 +36,4 @@ export declare const compareVersion: {
|
|
|
36
36
|
gte: (v1: string, v2: string) => boolean;
|
|
37
37
|
cmp: (v1: string, v2: string, operator: CompareOperator) => boolean;
|
|
38
38
|
};
|
|
39
|
-
export declare const compareMinorVersion: (v1: string, v2: string) =>
|
|
39
|
+
export declare const compareMinorVersion: (v1: string, v2: string) => 0 | 1 | -1;
|
|
@@ -1,11 +1,47 @@
|
|
|
1
1
|
import * as i0 from "@angular/core";
|
|
2
|
+
export declare enum PreventHandler {
|
|
3
|
+
Contextmenu = "contextmenu",
|
|
4
|
+
Paste = "paste",
|
|
5
|
+
Cut = "cut",
|
|
6
|
+
Copy = "copy"
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* 阻止点击事件
|
|
10
|
+
*/
|
|
2
11
|
export declare class PreventDirective {
|
|
3
12
|
prevent: boolean;
|
|
4
13
|
static ɵfac: i0.ɵɵFactoryDeclaration<PreventDirective, never>;
|
|
5
14
|
static ɵdir: i0.ɵɵDirectiveDeclaration<PreventDirective, "[prevent]", never, { "prevent": { "alias": "prevent"; "required": false; }; }, {}, never, never, true, never>;
|
|
6
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* 阻止冒泡事件
|
|
18
|
+
*/
|
|
7
19
|
export declare class StopDirective {
|
|
8
20
|
stop: boolean;
|
|
9
21
|
static ɵfac: i0.ɵɵFactoryDeclaration<StopDirective, never>;
|
|
10
22
|
static ɵdir: i0.ɵɵDirectiveDeclaration<StopDirective, "[stop]", never, { "stop": { "alias": "stop"; "required": false; }; }, {}, never, never, true, never>;
|
|
11
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* 阻止剪切板(拷贝、粘贴、剪切、右键菜单)等事件
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
*
|
|
29
|
+
* 阻止全部:
|
|
30
|
+
* ```
|
|
31
|
+
* <input aui-input aclPreventEvent>
|
|
32
|
+
* ```
|
|
33
|
+
* 自定义:
|
|
34
|
+
* ```
|
|
35
|
+
* <input aui-input [aclPreventEvent]="{copy: true, paste: true}">
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export declare class PreventClipboardDirective {
|
|
39
|
+
preventClipboardEvent: boolean | '' | Partial<Record<PreventHandler, boolean>>;
|
|
40
|
+
private isPreventEvent;
|
|
41
|
+
onContextmenu(event: Event): void;
|
|
42
|
+
onCut(event: Event): void;
|
|
43
|
+
onPaste(event: Event): void;
|
|
44
|
+
onCopy(event: Event): void;
|
|
45
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PreventClipboardDirective, never>;
|
|
46
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<PreventClipboardDirective, "input[aclPreventClipboardEvent]", never, { "preventClipboardEvent": { "alias": "aclPreventClipboardEvent"; "required": false; }; }, {}, never, never, true, never>;
|
|
47
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { HttpClient } from '@angular/common/http';
|
|
2
|
+
import { inject, Injectable } from '@angular/core';
|
|
3
|
+
import { API_GATEWAY, } from '../core/public-api';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class AuthApiService {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.http = inject(HttpClient);
|
|
8
|
+
}
|
|
9
|
+
getUserBindingList(params) {
|
|
10
|
+
return this.http.get(API_GATEWAY + '/auth/v2/userbindings', {
|
|
11
|
+
params,
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
getUserRoleList(params) {
|
|
15
|
+
return this.http.get(API_GATEWAY + '/auth/v2/usersroles', {
|
|
16
|
+
params,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
getRoleTemplateList(params) {
|
|
20
|
+
return this.http.get(API_GATEWAY + '/auth/v2/roletemplates', {
|
|
21
|
+
params,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
getUser(name) {
|
|
25
|
+
return this.http.get(API_GATEWAY + '/auth/v2/users/' + name);
|
|
26
|
+
}
|
|
27
|
+
static { this.ɵfac = function AuthApiService_Factory(t) { return new (t || AuthApiService)(); }; }
|
|
28
|
+
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: AuthApiService, factory: AuthApiService.ɵfac, providedIn: 'root' }); }
|
|
29
|
+
}
|
|
30
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AuthApiService, [{
|
|
31
|
+
type: Injectable,
|
|
32
|
+
args: [{ providedIn: 'root' }]
|
|
33
|
+
}], null, null); })();
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1hcGkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hcGkvYXV0aC1hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUNMLFdBQVcsR0FPWixNQUFNLG9CQUFvQixDQUFDOztBQUc1QixNQUFNLE9BQU8sY0FBYztJQUQzQjtRQUVVLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7S0FnQ25DO0lBOUJDLGtCQUFrQixDQUFDLE1BQTBCO1FBQzNDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLFdBQVcsR0FBRyx1QkFBdUIsRUFDckM7WUFDRSxNQUFNO1NBQ1AsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUEyQztRQUN6RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixXQUFXLEdBQUcscUJBQXFCLEVBQ25DO1lBQ0UsTUFBTTtTQUNQLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxNQUEwQjtRQUM1QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixXQUFXLEdBQUcsd0JBQXdCLEVBQ3RDO1lBQ0UsTUFBTTtTQUNQLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBWTtRQUNsQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFPLFdBQVcsR0FBRyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNyRSxDQUFDOytFQWhDVSxjQUFjO3VFQUFkLGNBQWMsV0FBZCxjQUFjLG1CQURELE1BQU07O2lGQUNuQixjQUFjO2NBRDFCLFVBQVU7ZUFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIEFQSV9HQVRFV0FZLFxuICBLdWJlcm5ldGVzUmVzb3VyY2VMaXN0LFxuICBSZXNvdXJjZUxpc3RQYXJhbXMsXG4gIFJvbGVUZW1wbGF0ZSxcbiAgVXNlcixcbiAgVXNlckJpbmRpbmcsXG4gIFVzZXJSb2xlLFxufSBmcm9tICcuLi9jb3JlL3B1YmxpYy1hcGknO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEF1dGhBcGlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuXG4gIGdldFVzZXJCaW5kaW5nTGlzdChwYXJhbXM6IFJlc291cmNlTGlzdFBhcmFtcykge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEt1YmVybmV0ZXNSZXNvdXJjZUxpc3Q8VXNlckJpbmRpbmc+PihcbiAgICAgIEFQSV9HQVRFV0FZICsgJy9hdXRoL3YyL3VzZXJiaW5kaW5ncycsXG4gICAgICB7XG4gICAgICAgIHBhcmFtcyxcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIGdldFVzZXJSb2xlTGlzdChwYXJhbXM6IHsgdXNlcnM6IHN0cmluZzsgcHJvamVjdD86IHN0cmluZyB9KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8S3ViZXJuZXRlc1Jlc291cmNlTGlzdDxVc2VyUm9sZT4+KFxuICAgICAgQVBJX0dBVEVXQVkgKyAnL2F1dGgvdjIvdXNlcnNyb2xlcycsXG4gICAgICB7XG4gICAgICAgIHBhcmFtcyxcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIGdldFJvbGVUZW1wbGF0ZUxpc3QocGFyYW1zOiBSZXNvdXJjZUxpc3RQYXJhbXMpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxLdWJlcm5ldGVzUmVzb3VyY2VMaXN0PFJvbGVUZW1wbGF0ZT4+KFxuICAgICAgQVBJX0dBVEVXQVkgKyAnL2F1dGgvdjIvcm9sZXRlbXBsYXRlcycsXG4gICAgICB7XG4gICAgICAgIHBhcmFtcyxcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIGdldFVzZXIobmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8VXNlcj4oQVBJX0dBVEVXQVkgKyAnL2F1dGgvdjIvdXNlcnMvJyArIG5hbWUpO1xuICB9XG59XG4iXX0=
|
|
@@ -81,6 +81,7 @@ export class PlatformUIService {
|
|
|
81
81
|
`images/${theme}/${DEFAULT_PORTAL_TOP_RESOURCE_NAME}`,
|
|
82
82
|
bottomImage: appendImageHeader(bottomImage) ||
|
|
83
83
|
`images/${theme}/${DEFAULT_PORTAL_BOTTOM_RESOURCE_NAME}`,
|
|
84
|
+
hasCustomized: !!topImage || !!bottomImage,
|
|
84
85
|
};
|
|
85
86
|
}));
|
|
86
87
|
}));
|
|
@@ -92,4 +93,4 @@ export class PlatformUIService {
|
|
|
92
93
|
type: Injectable,
|
|
93
94
|
args: [{ providedIn: 'root' }]
|
|
94
95
|
}], null, null); })();
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0tdWkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hcGkvcGxhdGZvcm0tdWkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRDLE9BQU8sRUFDTCxpQkFBaUIsRUFJakIsY0FBYyxHQUNmLE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUVsRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxlQUFlLENBQUM7QUFDckQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUM7QUFDckQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUM7QUFDckQsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsc0JBQXNCLENBQUM7QUFDbkUsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsc0JBQXNCLENBQUM7QUFFbkUsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsbUJBQW1CLENBQUM7QUFDNUQsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsbUJBQW1CLENBQUM7QUFDNUQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsa0JBQWtCLENBQUM7QUFDMUQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsa0JBQWtCLENBQUM7QUFDMUQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsV0FBVyxDQUFDO0FBQzdDLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLG1CQUFtQixDQUFDO0FBQzdELE1BQU0s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QUN2RCxXQUFXLEVBQ1QsaUJBQWlCLENBQUMsV0FBVyxDQUFDO3dCQUM5QixVQUFVLEtBQUssSUFBSSxtQ0FBbUMsRUFBRTtvQkFDMUQsYUFBYSxFQUFFLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLFdBQVc7aUJBQzNDLENBQUM7WUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7a0ZBM0VVLGlCQUFpQjt1RUFBakIsaUJBQWlCLFdBQWpCLGlCQUFpQixtQkFESixNQUFNOztpRkFDbkIsaUJBQWlCO2NBRDdCLFVBQVU7ZUFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUaGVtZVNlcnZpY2UgfSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgYXBwZW5kSW1hZ2VIZWFkZXIsXG4gIENvbmZpZ01hcCxcbiAgUHJvZHVjdERvY3NFbnRyeSxcbiAgUHJvZHVjdEVudHJ5LFxuICBSRVNPVVJDRV9UWVBFUyxcbn0gZnJvbSAnLi4vY29yZS9wdWJsaWMtYXBpJztcblxuaW1wb3J0IHsgSzhzQXBpU2VydmljZSB9IGZyb20gJy4vazhzLWFwaS5zZXJ2aWNlJztcblxuZXhwb3J0IGNvbnN0IFBMQVRGT1JNX0lORk9fQ01fTkFNRSA9ICdwbGF0Zm9ybS1pbmZvJztcbmV4cG9ydCBjb25zdCBQTEFURk9STV9OQU1FX1pIX0tFWSA9ICdwbGF0Zm9ybU5hbWVaSCc7XG5leHBvcnQgY29uc3QgUExBVEZPUk1fTkFNRV9FTl9LRVkgPSAncGxhdGZvcm1OYW1lRU4nO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUExBVEZPUk1fTkFNRV9aSF9LRVkgPSAnb3JpZ2luUGxhdGZvcm1OYW1lWkgnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUExBVEZPUk1fTkFNRV9FTl9LRVkgPSAnb3JpZ2luUGxhdGZvcm1OYW1lRU4nO1xuXG5leHBvcnQgY29uc3QgUE9SVEFMX01BSU5fVElUTEVfRU5fS0VZID0gJ3BvcnRhbE1haW5UaXRsZUVOJztcbmV4cG9ydCBjb25zdCBQT1JUQUxfTUFJTl9USVRMRV9aSF9LRVkgPSAncG9ydGFsTWFpblRpdGxlWkgnO1xuZXhwb3J0IGNvbnN0IFBPUlRBTF9TVUJfVElUTEVfWkhfS0VZID0gJ3BvcnRhbFN1YlRpdGxlWkgnO1xuZXhwb3J0IGNvbnN0IFBPUlRBTF9TVUJfVElUTEVfRU5fS0VZID0gJ3BvcnRhbFN1YlRpdGxlRU4nO1xuZXhwb3J0IGNvbnN0IFBPUlRBTF9VSV9DTV9OQU1FID0gJ3VpLXBvcnRhbCc7XG5leHBvcnQgY29uc3QgUE9SVEFMX1VJX0NNX05BTUVfREVGQVVMVCA9ICd1aS1wb3J0YWwtZGVmYXVsdCc7XG5leHBvcnQgY29uc3QgUE9SVEFMX1RPUF9JTUFHRV9LRVkgPSAndG9wLWJnJztcbmV4cG9ydCBjb25zdCBQT1JUQUxfQk9UVE9NX0lNQUdFX0tFWSA9ICdib3R0b20tYmcnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9QT1JUQUxfVE9QX1JFU09VUkNFX05BTUUgPSAncG9ydGFsLXRvcC5wbmcnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUE9SVEFMX0JPVFRPTV9SRVNPVVJDRV9OQU1FID0gJ3BvcnRhbC1ib3R0b20ucG5nJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX1BPUlRBTF9UT1BfUkVTT1VSQ0VfVVJMID0gJ2ltYWdlcy9saWdodC9wb3J0YWwtdG9wLnBuZyc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9QT1JUQUxfQk9UVE9NX1JFU09VUkNFX1VSTCA9XG4gICdpbWFnZXMvbGlnaHQvcG9ydGFsLWJvdHRvbS5wbmcnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFBsYXRmb3JtVUlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBrOHNBcGkgPSBpbmplY3QoSzhzQXBpU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGhlbWUgPSBpbmplY3QoVGhlbWVTZXJ2aWNlKTtcblxuICBnZXRFbnRyaWVzKCkge1xuICAgIHJldHVybiB0aGlzLms4c0FwaVxuICAgICAgLmdldEdsb2JhbFJlc291cmNlTGlzdDxQcm9kdWN0RW50cnk+KHtcbiAgICAgICAgdHlwZTogUkVTT1VSQ0VfVFlQRVMuUFJPRFVDVF9FTlRSWSxcbiAgICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgICBmaWVsZFNlbGVjdG9yOiAnbWV0YWRhdGEubmFtZSE9Y29uc29sZS1wb3J0YWwnLFxuICAgICAgICAgIGxpbWl0OiAnMCcsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwKGxpc3QgPT4gbGlzdC5pdGVtcykpO1xuICB9XG5cbiAgZ2V0RG9jc0VudHJ5KCkge1xuICAgIHJldHVybiB0aGlzLms4c0FwaS5nZXRHbG9iYWxSZXNvdXJjZTxQcm9kdWN0RG9jc0VudHJ5Pih7XG4gICAgICB0eXBlOiBSRVNPVVJDRV9UWVBFUy5QUk9EVUNUX0RPQ1NfRU5UUlksXG4gICAgICBuYW1lOiAncHJvZHVjdC1kb2NzLWVudHJ5JyxcbiAgICB9KTtcbiAgfVxuXG4gIGdldFBsYXRmb3JtSW5mbygpIHtcbiAgICByZXR1cm4gdGhpcy5rOHNBcGlcbiAgICAgIC5nZXRHbG9iYWxSZXNvdXJjZTxDb25maWdNYXA+KHtcbiAgICAgICAgdHlwZTogUkVTT1VSQ0VfVFlQRVMuQ09ORklHX01BUCxcbiAgICAgICAgbmFtZTogUExBVEZPUk1fSU5GT19DTV9OQU1FLFxuICAgICAgICBuYW1lc3BhY2VkOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoY20gPT4gKHtcbiAgICAgICAgICBuYW1lOiB7XG4gICAgICAgICAgICB6aDogY20uZGF0YVtQTEFURk9STV9OQU1FX1pIX0tFWV0sXG4gICAgICAgICAgICBlbjogY20uZGF0YVtQTEFURk9STV9OQU1FX0VOX0tFWV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBtYWluVGl0bGU6IHtcbiAgICAgICAgICAgIHpoOiBjbS5kYXRhW1BPUlRBTF9NQUlOX1RJVExFX1pIX0tFWV0sXG4gICAgICAgICAgICBlbjogY20uZGF0YVtQT1JUQUxfTUFJTl9USVRMRV9FTl9LRVldLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc3ViVGl0bGU6IHtcbiAgICAgICAgICAgIHpoOiBjbS5kYXRhW1BPUlRBTF9TVUJfVElUTEVfWkhfS0VZXSxcbiAgICAgICAgICAgIGVuOiBjbS5kYXRhW1BPUlRBTF9TVUJfVElUTEVfRU5fS0VZXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSksXG4gICAgICApO1xuICB9XG5cbiAgZ2V0QmFja2dyb3VuZEltYWdlcygpIHtcbiAgICByZXR1cm4gdGhpcy5rOHNBcGlcbiAgICAgIC5nZXRHbG9iYWxSZXNvdXJjZTxDb25maWdNYXA+KHtcbiAgICAgICAgdHlwZTogUkVTT1VSQ0VfVFlQRVMuQ09ORklHX01BUCxcbiAgICAgICAgbmFtZTogUE9SVEFMX1VJX0NNX05BTUUsXG4gICAgICAgIG5hbWVzcGFjZWQ6IHRydWUsXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChjbSA9PiB7XG4gICAgICAgICAgY29uc3QgdG9wSW1hZ2UgPSBjbS5iaW5hcnlEYXRhPy5bUE9SVEFMX1RPUF9JTUFHRV9LRVldO1xuICAgICAgICAgIGNvbnN0IGJvdHRvbUltYWdlID0gY20uYmluYXJ5RGF0YT8uW1BPUlRBTF9CT1RUT01fSU1BR0VfS0VZXTtcblxuICAgICAgICAgIHJldHVybiB0aGlzLnRoZW1lLmN1cnJlbnRUaGVtZSQucGlwZShcbiAgICAgICAgICAgIG1hcCh0aGVtZSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdG9wSW1hZ2U6XG4gICAgICAgICAgICAgICAgICBhcHBlbmRJbWFnZUhlYWRlcih0b3BJbWFnZSkgfHxcbiAgICAgICAgICAgICAgICAgIGBpbWFnZXMvJHt0aGVtZX0vJHtERUZBVUxUX1BPUlRBTF9UT1BfUkVTT1VSQ0VfTkFNRX1gLFxuICAgICAgICAgICAgICAgIGJvdHRvbUltYWdlOlxuICAgICAgICAgICAgICAgICAgYXBwZW5kSW1hZ2VIZWFkZXIoYm90dG9tSW1hZ2UpIHx8XG4gICAgICAgICAgICAgICAgICBgaW1hZ2VzLyR7dGhlbWV9LyR7REVGQVVMVF9QT1JUQUxfQk9UVE9NX1JFU09VUkNFX05BTUV9YCxcbiAgICAgICAgICAgICAgICBoYXNDdXN0b21pemVkOiAhIXRvcEltYWdlIHx8ICEhYm90dG9tSW1hZ2UsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -19,4 +19,5 @@ export * from './project-api.service';
|
|
|
19
19
|
export * from './platform-ui.service';
|
|
20
20
|
export * from './api-compatible.interceptor';
|
|
21
21
|
export * from './acp-common-api.service';
|
|
22
|
-
|
|
22
|
+
export * from './auth-api.service';
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hcGkvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsY0FBYztBQUNkLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogW1tpbmNsdWRlOmFwaS9SRUFETUUubWRdXVxuICogQG1vZHVsZSBhcGlcbiAqIEBwcmVmZXJyZWRcbiAqL1xuXG4vKiogaW1wb3J0cyAqL1xuZXhwb3J0ICogZnJvbSAnLi9hcGktZ2F0ZXdheS5pbnRlcmNlcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL2FwaS1nYXRld2F5LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jbHVzdGVyLXZlcnNpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2hlbHBlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9rOHMtYXBpLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9rOHMtYXBpLXJlc291cmNlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9wYWdlLXZpc2liaWxpdHkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3Jlc291cmNlLXVwZGF0ZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9jcnlwdG8uaW50ZXJjZXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9wcm9kdWN0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9wcm9qZWN0LWFwaS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcGxhdGZvcm0tdWkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2FwaS1jb21wYXRpYmxlLmludGVyY2VwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vYWNwLWNvbW1vbi1hcGkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2F1dGgtYXBpLnNlcnZpY2UnO1xuIl19
|