ssi-security-commons 0.19.0 → 0.19.1
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/esm2022/lib/alert/alert.component.mjs +28 -0
- package/esm2022/lib/services/auth-interceptor.service.mjs +165 -0
- package/esm2022/lib/services/crypto.service.mjs +41 -0
- package/esm2022/lib/services/jwt.service.mjs +43 -0
- package/esm2022/lib/services/messages.service.mjs +248 -0
- package/esm2022/lib/services/session.service.mjs +438 -0
- package/esm2022/lib/services/user-event.service.mjs +31 -0
- package/esm2022/lib/services/web-authn.service.mjs +249 -0
- package/esm2022/lib/shared/constants.mjs +5 -0
- package/esm2022/lib/ssi-security-commons.component.mjs +13 -0
- package/esm2022/lib/ssi-security-commons.module.mjs +63 -0
- package/esm2022/lib/ssi-security-commons.service.mjs +13 -0
- package/esm2022/lib/user.model.mjs +2 -0
- package/esm2022/public-api.mjs +16 -0
- package/esm2022/ssi-security-commons.mjs +5 -0
- package/fesm2022/ssi-security-commons.mjs +91 -52
- package/fesm2022/ssi-security-commons.mjs.map +1 -1
- package/lib/services/jwt.service.d.ts +1 -0
- package/lib/services/session.service.d.ts +1 -0
- package/package.json +3 -1
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Component, Inject } from '@angular/core';
|
|
2
|
+
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/material/dialog";
|
|
5
|
+
import * as i2 from "@angular/material/button";
|
|
6
|
+
import * as i3 from "@angular/common";
|
|
7
|
+
export class AlertComponent {
|
|
8
|
+
constructor(dialogRef, data) {
|
|
9
|
+
this.dialogRef = dialogRef;
|
|
10
|
+
this.data = data;
|
|
11
|
+
}
|
|
12
|
+
onConfirm() {
|
|
13
|
+
this.dialogRef.close(true);
|
|
14
|
+
}
|
|
15
|
+
onCancel() {
|
|
16
|
+
this.dialogRef.close(null);
|
|
17
|
+
}
|
|
18
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: AlertComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
19
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: AlertComponent, selector: "lib-app-alert", ngImport: i0, template: "<div class=\"sec-alert-icon\" *ngIf=\"data.icon==='warn'\">\n <svg width=\"48\" height=\"49\" viewBox=\"0 0 48 49\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M24 13.5C24.69 13.5 25.25 14.06 25.25 14.75V27.25C25.25 27.5815 25.1183 27.8995 24.8839 28.1339C24.6495 28.3683 24.3315 28.5 24 28.5C23.6685 28.5 23.3505 28.3683 23.1161 28.1339C22.8817 27.8995 22.75 27.5815 22.75 27.25V14.75C22.75 14.06 23.31 13.5 24 13.5ZM24 34.5C24.5304 34.5 25.0391 34.2893 25.4142 33.9142C25.7893 33.5391 26 33.0304 26 32.5C26 31.9696 25.7893 31.4609 25.4142 31.0858C25.0391 30.7107 24.5304 30.5 24 30.5C23.4696 30.5 22.9609 30.7107 22.5858 31.0858C22.2107 31.4609 22 31.9696 22 32.5C22 33.0304 22.2107 33.5391 22.5858 33.9142C22.9609 34.2893 23.4696 34.5 24 34.5ZM4 24.5C4 13.454 12.954 4.5 24 4.5C35.046 4.5 44 13.454 44 24.5C44 35.546 35.046 44.5 24 44.5C12.954 44.5 4 35.546 4 24.5ZM24 7C14.335 7 6.5 14.835 6.5 24.5C6.5 34.165 14.335 42 24 42C33.665 42 41.5 34.165 41.5 24.5C41.5 14.835 33.665 7 24 7Z\" fill=\"#FF4021\"/>\n </svg>\n</div>\n<h1 mat-dialog-title class=\"sec-alert-title\">{{data.title?data.title:'Alert'}}</h1>\n<div mat-dialog-content class=\"alert-min-width sec-alert-content\">\n <div>\n {{data.message}}\n </div>\n</div>\n<div class=\"sec-alert-actions\"> \n <button mat-flat-button color=\"primary\" class=\"sec-alert-ok\" (click)=\"onConfirm()\">{{data.okText ? data.okText : 'OK'}}</button>\n <button mat-flat-button class=\"sec-alert-cancel\" (click)=\"onCancel()\" *ngIf=\"data.cancelText\">{{data.cancelText ? data.cancelText : 'Cancel'}}</button>\n</div>\n", styles: [".sec-alert-icon{padding-top:32px;text-align:center}.sec-alert-title,.sec-alert-content{text-align:center}.sec-alert-actions{display:flex;flex-direction:column;justify-content:center;gap:8px;padding:8px 24px 24px}\n"], dependencies: [{ kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
20
|
+
}
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: AlertComponent, decorators: [{
|
|
22
|
+
type: Component,
|
|
23
|
+
args: [{ selector: 'lib-app-alert', standalone: false, template: "<div class=\"sec-alert-icon\" *ngIf=\"data.icon==='warn'\">\n <svg width=\"48\" height=\"49\" viewBox=\"0 0 48 49\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M24 13.5C24.69 13.5 25.25 14.06 25.25 14.75V27.25C25.25 27.5815 25.1183 27.8995 24.8839 28.1339C24.6495 28.3683 24.3315 28.5 24 28.5C23.6685 28.5 23.3505 28.3683 23.1161 28.1339C22.8817 27.8995 22.75 27.5815 22.75 27.25V14.75C22.75 14.06 23.31 13.5 24 13.5ZM24 34.5C24.5304 34.5 25.0391 34.2893 25.4142 33.9142C25.7893 33.5391 26 33.0304 26 32.5C26 31.9696 25.7893 31.4609 25.4142 31.0858C25.0391 30.7107 24.5304 30.5 24 30.5C23.4696 30.5 22.9609 30.7107 22.5858 31.0858C22.2107 31.4609 22 31.9696 22 32.5C22 33.0304 22.2107 33.5391 22.5858 33.9142C22.9609 34.2893 23.4696 34.5 24 34.5ZM4 24.5C4 13.454 12.954 4.5 24 4.5C35.046 4.5 44 13.454 44 24.5C44 35.546 35.046 44.5 24 44.5C12.954 44.5 4 35.546 4 24.5ZM24 7C14.335 7 6.5 14.835 6.5 24.5C6.5 34.165 14.335 42 24 42C33.665 42 41.5 34.165 41.5 24.5C41.5 14.835 33.665 7 24 7Z\" fill=\"#FF4021\"/>\n </svg>\n</div>\n<h1 mat-dialog-title class=\"sec-alert-title\">{{data.title?data.title:'Alert'}}</h1>\n<div mat-dialog-content class=\"alert-min-width sec-alert-content\">\n <div>\n {{data.message}}\n </div>\n</div>\n<div class=\"sec-alert-actions\"> \n <button mat-flat-button color=\"primary\" class=\"sec-alert-ok\" (click)=\"onConfirm()\">{{data.okText ? data.okText : 'OK'}}</button>\n <button mat-flat-button class=\"sec-alert-cancel\" (click)=\"onCancel()\" *ngIf=\"data.cancelText\">{{data.cancelText ? data.cancelText : 'Cancel'}}</button>\n</div>\n", styles: [".sec-alert-icon{padding-top:32px;text-align:center}.sec-alert-title,.sec-alert-content{text-align:center}.sec-alert-actions{display:flex;flex-direction:column;justify-content:center;gap:8px;padding:8px 24px 24px}\n"] }]
|
|
24
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
25
|
+
type: Inject,
|
|
26
|
+
args: [MAT_DIALOG_DATA]
|
|
27
|
+
}] }]; } });
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3NpLXNlY3VyaXR5LWNvbW1vbnMvc3JjL2xpYi9hbGVydC9hbGVydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zc2ktc2VjdXJpdHktY29tbW9ucy9zcmMvbGliL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBZ0IsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7O0FBaUJ6RSxNQUFNLE9BQU8sY0FBYztJQUV6QixZQUNTLFNBQXVDLEVBQ2QsSUFBZ0I7UUFEekMsY0FBUyxHQUFULFNBQVMsQ0FBOEI7UUFDZCxTQUFJLEdBQUosSUFBSSxDQUFZO0lBQzlDLENBQUM7SUFFTCxTQUFTO1FBQ1AsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDOzhHQWJVLGNBQWMsOENBSWYsZUFBZTtrR0FKZCxjQUFjLHFEQ2xCM0Isd2xEQWVBOzsyRkRHYSxjQUFjO2tCQU4xQixTQUFTOytCQUNJLGVBQWUsY0FHYixLQUFLOzswQkFNaEIsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuZXhwb3J0IGludGVyZmFjZSBEaWFsb2dEYXRhIHtcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIGljb24/OiBzdHJpbmc7XG4gIHR5cGU/OiBzdHJpbmc7XG4gIG1lc3NhZ2U/OiBzdHJpbmc7XG4gIG9rVGV4dD86IHN0cmluZztcbiAgY2FuY2VsVGV4dD86IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaWItYXBwLWFsZXJ0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYWxlcnQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2FsZXJ0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgQWxlcnRDb21wb25lbnQgIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8QWxlcnRDb21wb25lbnQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogRGlhbG9nRGF0YVxuICApIHsgfVxuXG4gIG9uQ29uZmlybSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0cnVlKTtcbiAgfVxuXG4gIG9uQ2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKG51bGwpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2VjLWFsZXJ0LWljb25cIiAqbmdJZj1cImRhdGEuaWNvbj09PSd3YXJuJ1wiPlxuICAgIDxzdmcgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ5XCIgdmlld0JveD1cIjAgMCA0OCA0OVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICA8cGF0aCBkPVwiTTI0IDEzLjVDMjQuNjkgMTMuNSAyNS4yNSAxNC4wNiAyNS4yNSAxNC43NVYyNy4yNUMyNS4yNSAyNy41ODE1IDI1LjExODMgMjcuODk5NSAyNC44ODM5IDI4LjEzMzlDMjQuNjQ5NSAyOC4zNjgzIDI0LjMzMTUgMjguNSAyNCAyOC41QzIzLjY2ODUgMjguNSAyMy4zNTA1IDI4LjM2ODMgMjMuMTE2MSAyOC4xMzM5QzIyLjg4MTcgMjcuODk5NSAyMi43NSAyNy41ODE1IDIyLjc1IDI3LjI1VjE0Ljc1QzIyLjc1IDE0LjA2IDIzLjMxIDEzLjUgMjQgMTMuNVpNMjQgMzQuNUMyNC41MzA0IDM0LjUgMjUuMDM5MSAzNC4yODkzIDI1LjQxNDIgMzMuOTE0MkMyNS43ODkzIDMzLjUzOTEgMjYgMzMuMDMwNCAyNiAzMi41QzI2IDMxLjk2OTYgMjUuNzg5MyAzMS40NjA5IDI1LjQxNDIgMzEuMDg1OEMyNS4wMzkxIDMwLjcxMDcgMjQuNTMwNCAzMC41IDI0IDMwLjVDMjMuNDY5NiAzMC41IDIyLjk2MDkgMzAuNzEwNyAyMi41ODU4IDMxLjA4NThDMjIuMjEwNyAzMS40NjA5IDIyIDMxLjk2OTYgMjIgMzIuNUMyMiAzMy4wMzA0IDIyLjIxMDcgMzMuNTM5MSAyMi41ODU4IDMzLjkxNDJDMjIuOTYwOSAzNC4yODkzIDIzLjQ2OTYgMzQuNSAyNCAzNC41Wk00IDI0LjVDNCAxMy40NTQgMTIuOTU0IDQuNSAyNCA0LjVDMzUuMDQ2IDQuNSA0NCAxMy40NTQgNDQgMjQuNUM0NCAzNS41NDYgMzUuMDQ2IDQ0LjUgMjQgNDQuNUMxMi45NTQgNDQuNSA0IDM1LjU0NiA0IDI0LjVaTTI0IDdDMTQuMzM1IDcgNi41IDE0LjgzNSA2LjUgMjQuNUM2LjUgMzQuMTY1IDE0LjMzNSA0MiAyNCA0MkMzMy42NjUgNDIgNDEuNSAzNC4xNjUgNDEuNSAyNC41QzQxLjUgMTQuODM1IDMzLjY2NSA3IDI0IDdaXCIgZmlsbD1cIiNGRjQwMjFcIi8+XG4gICAgPC9zdmc+XG48L2Rpdj5cbjxoMSBtYXQtZGlhbG9nLXRpdGxlIGNsYXNzPVwic2VjLWFsZXJ0LXRpdGxlXCI+e3tkYXRhLnRpdGxlP2RhdGEudGl0bGU6J0FsZXJ0J319PC9oMT5cbjxkaXYgbWF0LWRpYWxvZy1jb250ZW50IGNsYXNzPVwiYWxlcnQtbWluLXdpZHRoIHNlYy1hbGVydC1jb250ZW50XCI+XG4gICAgPGRpdj5cbiAgICAgICAge3tkYXRhLm1lc3NhZ2V9fVxuICAgIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwic2VjLWFsZXJ0LWFjdGlvbnNcIj4gXG4gICAgPGJ1dHRvbiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgY2xhc3M9XCJzZWMtYWxlcnQtb2tcIiAoY2xpY2spPVwib25Db25maXJtKClcIj57e2RhdGEub2tUZXh0ID8gZGF0YS5va1RleHQgOiAnT0snfX08L2J1dHRvbj5cbiAgICA8YnV0dG9uIG1hdC1mbGF0LWJ1dHRvbiBjbGFzcz1cInNlYy1hbGVydC1jYW5jZWxcIiAoY2xpY2spPVwib25DYW5jZWwoKVwiICpuZ0lmPVwiZGF0YS5jYW5jZWxUZXh0XCI+e3tkYXRhLmNhbmNlbFRleHQgPyBkYXRhLmNhbmNlbFRleHQgOiAnQ2FuY2VsJ319PC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
import { Inject, Injectable } from '@angular/core';
|
|
3
|
+
import { HttpErrorResponse, HttpResponse } from '@angular/common/http';
|
|
4
|
+
import { BehaviorSubject, throwError } from 'rxjs';
|
|
5
|
+
import { catchError, filter, map, switchMap, take } from 'rxjs/operators';
|
|
6
|
+
import { MessagesService } from './messages.service';
|
|
7
|
+
import { LANG, TOKEN } from '../shared/constants';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "./crypto.service";
|
|
10
|
+
import * as i2 from "@angular/router";
|
|
11
|
+
import * as i3 from "./jwt.service";
|
|
12
|
+
import * as i4 from "./session.service";
|
|
13
|
+
export class AuthInterceptor {
|
|
14
|
+
constructor(cryptoService, environment) {
|
|
15
|
+
this.cryptoService = cryptoService;
|
|
16
|
+
console.log('AuthInterceptor constructor');
|
|
17
|
+
this.environment = environment;
|
|
18
|
+
}
|
|
19
|
+
intercept(request, next) {
|
|
20
|
+
let token;
|
|
21
|
+
if (this.environment.production) {
|
|
22
|
+
const t = this.cryptoService.encrypt(TOKEN);
|
|
23
|
+
const to = window.localStorage.getItem(t);
|
|
24
|
+
if (to) {
|
|
25
|
+
token = this.cryptoService.decrypt(to);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
token = window.localStorage.getItem(TOKEN);
|
|
30
|
+
}
|
|
31
|
+
let encrypt = request.headers.get('encrypted');
|
|
32
|
+
if (encrypt && encrypt === 'true') {
|
|
33
|
+
let body = request.body;
|
|
34
|
+
let bodyStr = JSON.stringify(body);
|
|
35
|
+
var newBody = {
|
|
36
|
+
encrypted: this.cryptoService.encrypt(bodyStr)
|
|
37
|
+
};
|
|
38
|
+
request = request.clone({
|
|
39
|
+
body: newBody
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
if (token) {
|
|
43
|
+
request = request.clone({
|
|
44
|
+
setHeaders: {
|
|
45
|
+
Authorization: 'Bearer ' + token,
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
const l = window.localStorage.getItem(LANG);
|
|
50
|
+
if (l && request.url.indexOf(this.environment.authEndPoint) < 0) {
|
|
51
|
+
request = request.clone({
|
|
52
|
+
headers: request.headers.append('Language', l)
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
return next.handle(request);
|
|
56
|
+
}
|
|
57
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: AuthInterceptor, deps: [{ token: i1.CryptoService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
58
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: AuthInterceptor }); }
|
|
59
|
+
}
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: AuthInterceptor, decorators: [{
|
|
61
|
+
type: Injectable
|
|
62
|
+
}], ctorParameters: function () { return [{ type: i1.CryptoService }, { type: undefined, decorators: [{
|
|
63
|
+
type: Inject,
|
|
64
|
+
args: ['environment']
|
|
65
|
+
}] }]; } });
|
|
66
|
+
export class ResponseInterceptor {
|
|
67
|
+
constructor(injector, router, cryptoService, jwtService, sessionService) {
|
|
68
|
+
this.injector = injector;
|
|
69
|
+
this.router = router;
|
|
70
|
+
this.cryptoService = cryptoService;
|
|
71
|
+
this.jwtService = jwtService;
|
|
72
|
+
this.sessionService = sessionService;
|
|
73
|
+
this.isRefreshing = false;
|
|
74
|
+
this.refreshTokenSubject = new BehaviorSubject(null);
|
|
75
|
+
setTimeout(() => {
|
|
76
|
+
this.messages = this.injector.get(MessagesService);
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
intercept(request, next) {
|
|
80
|
+
return next.handle(request).pipe(map((event) => {
|
|
81
|
+
if (event instanceof HttpResponse) {
|
|
82
|
+
let encrypt = request.headers.get('encrypted');
|
|
83
|
+
if (encrypt && encrypt === 'true' && event.body.encrypted) {
|
|
84
|
+
event = event.clone({ body: this.decryptBody(event.body) });
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return event;
|
|
88
|
+
}), catchError(error => {
|
|
89
|
+
if (error instanceof HttpErrorResponse) {
|
|
90
|
+
console.error(error);
|
|
91
|
+
let nerror = error;
|
|
92
|
+
if (this.router.url != '/login' && this.router.url.indexOf('/login') < 0) {
|
|
93
|
+
if (nerror.status === 401) {
|
|
94
|
+
return this.handle401Error(request, next);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
let skipError = request.headers.get('skipError');
|
|
98
|
+
if (skipError && skipError === 'true') {
|
|
99
|
+
return throwError(nerror);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
this.messages?.showErrorMessage(nerror, request);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
return throwError(nerror);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}));
|
|
111
|
+
}
|
|
112
|
+
decryptBody(body) {
|
|
113
|
+
let encrypted = body.encrypted;
|
|
114
|
+
let strJson = this.cryptoService.decrypt(encrypted);
|
|
115
|
+
return JSON.parse(strJson);
|
|
116
|
+
}
|
|
117
|
+
handle401Error(request, next) {
|
|
118
|
+
if (!this.isRefreshing) {
|
|
119
|
+
this.isRefreshing = true;
|
|
120
|
+
this.refreshTokenSubject.next(null);
|
|
121
|
+
const refreshToken = this.sessionService.getRefreshToken();
|
|
122
|
+
if (refreshToken) {
|
|
123
|
+
const decoded = this.jwtService.decodeToken(refreshToken);
|
|
124
|
+
return this.sessionService.getNewTokenClient(refreshToken, decoded.azp).pipe(switchMap((res) => {
|
|
125
|
+
console.log('refresh token response');
|
|
126
|
+
console.log(res);
|
|
127
|
+
this.isRefreshing = false;
|
|
128
|
+
this.sessionService.setToken(res.access_token);
|
|
129
|
+
this.sessionService.setRefreshToken(res.refresh_token);
|
|
130
|
+
this.refreshTokenSubject.next(res.access_token);
|
|
131
|
+
return next.handle(this.addTokenHeader(request, res.access_token));
|
|
132
|
+
}), catchError((err) => {
|
|
133
|
+
this.isRefreshing = false;
|
|
134
|
+
this.sessionService.logout();
|
|
135
|
+
this.goToLogin();
|
|
136
|
+
return throwError(err);
|
|
137
|
+
}));
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
return this.refreshTokenSubject.pipe(filter(token => token !== null), take(1), switchMap((token) => next.handle(this.addTokenHeader(request, token))));
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
addTokenHeader(request, token) {
|
|
145
|
+
return request.clone({ headers: request.headers.set('Authorization', 'Bearer ' + token) });
|
|
146
|
+
}
|
|
147
|
+
goToLogin() {
|
|
148
|
+
this.sessionService.getLoginUrl().subscribe(res => {
|
|
149
|
+
console.log(res);
|
|
150
|
+
const loginUrl = res.data;
|
|
151
|
+
const url = window.location.href;
|
|
152
|
+
if (url.indexOf(loginUrl) < 0) {
|
|
153
|
+
window.location.href = loginUrl + '?continue=' + encodeURIComponent(url);
|
|
154
|
+
}
|
|
155
|
+
}, (err) => {
|
|
156
|
+
console.error(err);
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: ResponseInterceptor, deps: [{ token: i0.Injector }, { token: i2.Router }, { token: i1.CryptoService }, { token: i3.JwtService }, { token: i4.SessionService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
160
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: ResponseInterceptor }); }
|
|
161
|
+
}
|
|
162
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: ResponseInterceptor, decorators: [{
|
|
163
|
+
type: Injectable
|
|
164
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i2.Router }, { type: i1.CryptoService }, { type: i3.JwtService }, { type: i4.SessionService }]; } });
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1pbnRlcmNlcHRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3NpLXNlY3VyaXR5LWNvbW1vbnMvc3JjL2xpYi9zZXJ2aWNlcy9hdXRoLWludGVyY2VwdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBd0QsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0gsT0FBTyxFQUFFLGVBQWUsRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQU8sTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFJckQsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7O0FBS2xELE1BQU0sT0FBTyxlQUFlO0lBSTFCLFlBQW9CLGFBQTRCLEVBQXlCLFdBQWdCO1FBQXJFLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzlDLE9BQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUNqQyxDQUFDO0lBRUQsU0FBUyxDQUFDLE9BQXlCLEVBQUUsSUFBaUI7UUFFcEQsSUFBSSxLQUFLLENBQUM7UUFDVixJQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFO1lBQzlCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVDLE1BQU0sRUFBRSxHQUFHLE1BQU0s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LENBQUMsSUFBSSxDQUFDO1lBQzFCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2pDLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBQyxDQUFDLEVBQUU7Z0JBQzNCLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLFFBQVEsR0FBRyxZQUFZLEdBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDeEU7UUFDSCxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNULE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQTFHVSxtQkFBbUI7a0hBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwUmVxdWVzdCwgSHR0cEhhbmRsZXIsIEh0dHBFdmVudCwgSHR0cEludGVyY2VwdG9yLCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBNZXNzYWdlc1NlcnZpY2UgfSBmcm9tICcuL21lc3NhZ2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3J5cHRvU2VydmljZSB9IGZyb20gJy4vY3J5cHRvLnNlcnZpY2UnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXNzaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgTEFORywgVE9LRU4gfSBmcm9tICcuLi9zaGFyZWQvY29uc3RhbnRzJztcbmltcG9ydCB7IEp3dFNlcnZpY2UgfSBmcm9tICcuL2p3dC5zZXJ2aWNlJztcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXV0aEludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcblxuICBwcml2YXRlIGVudmlyb25tZW50O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY3J5cHRvU2VydmljZTogQ3J5cHRvU2VydmljZSwgQEluamVjdCgnZW52aXJvbm1lbnQnKSBlbnZpcm9ubWVudDogYW55KSB7XG4gICAgY29uc29sZS5sb2coJ0F1dGhJbnRlcmNlcHRvciBjb25zdHJ1Y3RvcicpO1xuICAgIHRoaXMuZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgfVxuXG4gIGludGVyY2VwdChyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcblxuICAgIGxldCB0b2tlbjtcbiAgICBpZih0aGlzLmVudmlyb25tZW50LnByb2R1Y3Rpb24pIHtcbiAgICAgIGNvbnN0IHQgPSB0aGlzLmNyeXB0b1NlcnZpY2UuZW5jcnlwdChUT0tFTik7XG4gICAgICBjb25zdCB0byA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0KTtcbiAgICAgIGlmICh0bykge1xuICAgICAgICB0b2tlbiA9IHRoaXMuY3J5cHRvU2VydmljZS5kZWNyeXB0KHRvKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdG9rZW4gPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oVE9LRU4pO1xuICAgIH1cblxuICAgIGxldCBlbmNyeXB0ID0gcmVxdWVzdC5oZWFkZXJzLmdldCgnZW5jcnlwdGVkJyk7XG4gICAgaWYoZW5jcnlwdCAmJiBlbmNyeXB0ID09PSAndHJ1ZScpe1xuICAgICAgbGV0IGJvZHkgPSByZXF1ZXN0LmJvZHk7XG4gICAgICBsZXQgYm9keVN0ciA9IEpTT04uc3RyaW5naWZ5KGJvZHkpO1xuICAgICAgdmFyIG5ld0JvZHkgPSB7XG4gICAgICAgIGVuY3J5cHRlZDogdGhpcy5jcnlwdG9TZXJ2aWNlLmVuY3J5cHQoYm9keVN0cilcbiAgICAgIH1cbiAgICAgIHJlcXVlc3QgPSByZXF1ZXN0LmNsb25lKHtcbiAgICAgICAgYm9keTogbmV3Qm9keVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0b2tlbikge1xuICAgICAgcmVxdWVzdCA9IHJlcXVlc3QuY2xvbmUoe1xuICAgICAgICBzZXRIZWFkZXJzOiB7XG4gICAgICAgICAgQXV0aG9yaXphdGlvbjogJ0JlYXJlciAnICsgdG9rZW4sXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGwgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oTEFORyk7XG4gICAgaWYgKGwgJiYgcmVxdWVzdC51cmwuaW5kZXhPZih0aGlzLmVudmlyb25tZW50LmF1dGhFbmRQb2ludCk8MCkge1xuICAgICAgcmVxdWVzdCA9IHJlcXVlc3QuY2xvbmUoe1xuICAgICAgICBoZWFkZXJzOiByZXF1ZXN0LmhlYWRlcnMuYXBwZW5kKCdMYW5ndWFnZScsIGwpXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpO1xuICB9XG59XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJlc3BvbnNlSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuXG4gIHByaXZhdGUgbWVzc2FnZXM6IE1lc3NhZ2VzU2VydmljZSB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBpc1JlZnJlc2hpbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSByZWZyZXNoVG9rZW5TdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgY3J5cHRvU2VydmljZTogQ3J5cHRvU2VydmljZSxcbiAgICBwcml2YXRlIGp3dFNlcnZpY2U6IEp3dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZXNzaW9uU2VydmljZTogU2Vzc2lvblNlcnZpY2UpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubWVzc2FnZXMgPSB0aGlzLmluamVjdG9yLmdldChNZXNzYWdlc1NlcnZpY2UpO1xuICAgIH0pXG4gIH1cblxuICBpbnRlcmNlcHQocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG5cbiAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdCkucGlwZShcbiAgICAgIG1hcCgoZXZlbnQ6IEh0dHBFdmVudDxhbnk+KSA9PiB7XG4gICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XG4gICAgICAgICAgICBsZXQgZW5jcnlwdCA9IHJlcXVlc3QuaGVhZGVycy5nZXQoJ2VuY3J5cHRlZCcpO1xuICAgICAgICAgICAgaWYoZW5jcnlwdCAmJiBlbmNyeXB0ID09PSAndHJ1ZScgJiYgZXZlbnQuYm9keS5lbmNyeXB0ZWQpe1xuICAgICAgICAgICAgICBldmVudCA9IGV2ZW50LmNsb25lKHtib2R5OiB0aGlzLmRlY3J5cHRCb2R5KGV2ZW50LmJvZHkpfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBldmVudDtcbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIGxldCBuZXJyb3IgPSBlcnJvcjtcbiAgICAgICAgICAgIGlmICh0aGlzLnJvdXRlci51cmwgIT0gJy9sb2dpbicgJiYgdGhpcy5yb3V0ZXIudXJsLmluZGV4T2YoJy9sb2dpbicpPDApIHtcbiAgICAgICAgICAgICAgaWYgKG5lcnJvci5zdGF0dXMgPT09IDQwMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZTQwMUVycm9yKHJlcXVlc3QsIG5leHQpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxldCBza2lwRXJyb3IgPSByZXF1ZXN0LmhlYWRlcnMuZ2V0KCdza2lwRXJyb3InKTtcbiAgICAgICAgICAgICAgICBpZihza2lwRXJyb3IgJiYgc2tpcEVycm9yPT09J3RydWUnKXtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKG5lcnJvcik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZXM/LnNob3dFcnJvck1lc3NhZ2UobmVycm9yLCByZXF1ZXN0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKG5lcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pKSBhcyBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PjtcbiAgfVxuXG4gIGRlY3J5cHRCb2R5KGJvZHk6IGFueSk6IGFueSB7XG4gICAgbGV0IGVuY3J5cHRlZCA9IGJvZHkuZW5jcnlwdGVkO1xuICAgIGxldCBzdHJKc29uID0gdGhpcy5jcnlwdG9TZXJ2aWNlLmRlY3J5cHQoZW5jcnlwdGVkKTtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShzdHJKc29uKTtcbiAgfVxuXG5cbiAgcHJpdmF0ZSBoYW5kbGU0MDFFcnJvcihyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcikge1xuICAgIGlmICghdGhpcy5pc1JlZnJlc2hpbmcpIHtcbiAgICAgICAgdGhpcy5pc1JlZnJlc2hpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLnJlZnJlc2hUb2tlblN1YmplY3QubmV4dChudWxsKTtcbiAgICAgICAgY29uc3QgcmVmcmVzaFRva2VuID0gdGhpcy5zZXNzaW9uU2VydmljZS5nZXRSZWZyZXNoVG9rZW4oKTtcbiAgICAgICAgaWYgKHJlZnJlc2hUb2tlbil7XG4gICAgICAgICAgICBjb25zdCBkZWNvZGVkID0gdGhpcy5qd3RTZXJ2aWNlLmRlY29kZVRva2VuKHJlZnJlc2hUb2tlbik7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXNzaW9uU2VydmljZS5nZXROZXdUb2tlbkNsaWVudChyZWZyZXNoVG9rZW4sIGRlY29kZWQuYXpwKS5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3JlZnJlc2ggdG9rZW4gcmVzcG9uc2UnKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1JlZnJlc2hpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uU2VydmljZS5zZXRUb2tlbihyZXMuYWNjZXNzX3Rva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uU2VydmljZS5zZXRSZWZyZXNoVG9rZW4ocmVzLnJlZnJlc2hfdG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlblN1YmplY3QubmV4dChyZXMuYWNjZXNzX3Rva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHRoaXMuYWRkVG9rZW5IZWFkZXIocmVxdWVzdCwgcmVzLmFjY2Vzc190b2tlbikpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzUmVmcmVzaGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLmxvZ291dCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdvVG9Mb2dpbigpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmcmVzaFRva2VuU3ViamVjdC5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKHRva2VuID0+IHRva2VuICE9PSBudWxsKSxcbiAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKHRva2VuKSA9PiBuZXh0LmhhbmRsZSh0aGlzLmFkZFRva2VuSGVhZGVyKHJlcXVlc3QsIHRva2VuKSkpXG4gICAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRUb2tlbkhlYWRlcihyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LCB0b2tlbjogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHJlcXVlc3QuY2xvbmUoeyBoZWFkZXJzOiByZXF1ZXN0LmhlYWRlcnMuc2V0KCdBdXRob3JpemF0aW9uJywgJ0JlYXJlciAnICsgdG9rZW4pIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnb1RvTG9naW4oKTogdm9pZCB7XG4gICAgdGhpcy5zZXNzaW9uU2VydmljZS5nZXRMb2dpblVybCgpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgY29uc29sZS5sb2cocmVzKTtcbiAgICAgIGNvbnN0IGxvZ2luVXJsID0gcmVzLmRhdGE7XG4gICAgICBjb25zdCB1cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICAgIGlmICh1cmwuaW5kZXhPZihsb2dpblVybCk8MCkge1xuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGxvZ2luVXJsICsgJz9jb250aW51ZT0nK2VuY29kZVVSSUNvbXBvbmVudCh1cmwpO1xuICAgICAgfVxuICAgIH0sIChlcnIpID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICB9KTtcbiAgfVxuXG59XG5cblxuXG5cbiJdfQ==
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as CryptoJS from 'crypto-js';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class CryptoService {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.secret = '&E)H@McQfThWmZq4';
|
|
7
|
+
this.configuration = {
|
|
8
|
+
mode: CryptoJS.mode.ECB
|
|
9
|
+
};
|
|
10
|
+
const hash = CryptoJS.SHA1(this.secret);
|
|
11
|
+
this.key = CryptoJS.lib.WordArray.create(hash.words.slice(0, 16 / 4));
|
|
12
|
+
}
|
|
13
|
+
encrypt(text) {
|
|
14
|
+
if (!text) {
|
|
15
|
+
return '';
|
|
16
|
+
}
|
|
17
|
+
return CryptoJS.AES.encrypt(text, this.key, this.configuration).toString();
|
|
18
|
+
}
|
|
19
|
+
decrypt(text) {
|
|
20
|
+
if (!text) {
|
|
21
|
+
return '';
|
|
22
|
+
}
|
|
23
|
+
return CryptoJS.AES.decrypt(text, this.key, this.configuration).toString(CryptoJS.enc.Utf8);
|
|
24
|
+
}
|
|
25
|
+
encryptWithSecret(text, secret) {
|
|
26
|
+
const hash = CryptoJS.SHA1(secret);
|
|
27
|
+
const key = CryptoJS.lib.WordArray.create(hash.words.slice(0, 16 / 4));
|
|
28
|
+
return CryptoJS.AES.encrypt(text, key, this.configuration).toString();
|
|
29
|
+
}
|
|
30
|
+
decryptWithSecret(text, secret) {
|
|
31
|
+
const hash = CryptoJS.SHA1(secret);
|
|
32
|
+
const key = CryptoJS.lib.WordArray.create(hash.words.slice(0, 16 / 4));
|
|
33
|
+
return CryptoJS.AES.decrypt(text, key, this.configuration).toString(CryptoJS.enc.Utf8);
|
|
34
|
+
}
|
|
35
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: CryptoService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
36
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: CryptoService }); }
|
|
37
|
+
}
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: CryptoService, decorators: [{
|
|
39
|
+
type: Injectable
|
|
40
|
+
}], ctorParameters: function () { return []; } });
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zc2ktc2VjdXJpdHktY29tbW9ucy9zcmMvbGliL3NlcnZpY2VzL2NyeXB0by5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxLQUFLLFFBQVEsTUFBTSxXQUFXLENBQUM7O0FBR3RDLE1BQU0sT0FBTyxhQUFhO0lBTXhCO1FBRlEsV0FBTSxHQUFHLGtCQUFrQixDQUFDO1FBR2xDLElBQUksQ0FBQyxhQUFhLEdBQUc7WUFDbkIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRztTQUN4QixDQUFDO1FBQ0YsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBWTtRQUNsQixJQUFJLENBQUMsSUFBSSxFQUFFO1lBQUMsT0FBTyxFQUFFLENBQUM7U0FBQztRQUN2QixPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3RSxDQUFDO0lBRUQsT0FBTyxDQUFDLElBQVk7UUFDbEIsSUFBSSxDQUFDLElBQUksRUFBRTtZQUFDLE9BQU8sRUFBRSxDQUFDO1NBQUM7UUFDdkIsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUVELGlCQUFpQixDQUFDLElBQVksRUFBRSxNQUFjO1FBQzVDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkMsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2RSxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3hFLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxJQUFZLEVBQUUsTUFBYztRQUM1QyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkUsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6RixDQUFDOzhHQWxDVSxhQUFhO2tIQUFiLGFBQWE7OzJGQUFiLGFBQWE7a0JBRHpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBDcnlwdG9KUyBmcm9tICdjcnlwdG8tanMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ3J5cHRvU2VydmljZSB7XG5cbiAgcHJpdmF0ZSBjb25maWd1cmF0aW9uOiBhbnk7XG4gIHByaXZhdGUga2V5OiBhbnk7XG4gIHByaXZhdGUgc2VjcmV0ID0gJyZFKUhATWNRZlRoV21acTQnO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IHtcbiAgICAgIG1vZGU6IENyeXB0b0pTLm1vZGUuRUNCXG4gICAgfTtcbiAgICBjb25zdCBoYXNoID0gQ3J5cHRvSlMuU0hBMSh0aGlzLnNlY3JldCk7XG4gICAgdGhpcy5rZXkgPSBDcnlwdG9KUy5saWIuV29yZEFycmF5LmNyZWF0ZShoYXNoLndvcmRzLnNsaWNlKDAsIDE2IC8gNCkpO1xuICB9XG5cbiAgZW5jcnlwdCh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghdGV4dCkge3JldHVybiAnJzt9XG4gICAgcmV0dXJuIENyeXB0b0pTLkFFUy5lbmNyeXB0KHRleHQsIHRoaXMua2V5LCB0aGlzLmNvbmZpZ3VyYXRpb24pLnRvU3RyaW5nKCk7XG4gIH1cblxuICBkZWNyeXB0KHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCF0ZXh0KSB7cmV0dXJuICcnO31cbiAgICByZXR1cm4gQ3J5cHRvSlMuQUVTLmRlY3J5cHQodGV4dCwgdGhpcy5rZXksIHRoaXMuY29uZmlndXJhdGlvbikudG9TdHJpbmcoQ3J5cHRvSlMuZW5jLlV0ZjgpO1xuICB9XG5cbiAgZW5jcnlwdFdpdGhTZWNyZXQodGV4dDogc3RyaW5nLCBzZWNyZXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgaGFzaCA9IENyeXB0b0pTLlNIQTEoc2VjcmV0KTtcbiAgICBjb25zdCBrZXkgPSBDcnlwdG9KUy5saWIuV29yZEFycmF5LmNyZWF0ZShoYXNoLndvcmRzLnNsaWNlKDAsIDE2IC8gNCkpO1xuICAgIHJldHVybiBDcnlwdG9KUy5BRVMuZW5jcnlwdCh0ZXh0LCBrZXksIHRoaXMuY29uZmlndXJhdGlvbikudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGRlY3J5cHRXaXRoU2VjcmV0KHRleHQ6IHN0cmluZywgc2VjcmV0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGhhc2ggPSBDcnlwdG9KUy5TSEExKHNlY3JldCk7XG4gICAgY29uc3Qga2V5ID0gQ3J5cHRvSlMubGliLldvcmRBcnJheS5jcmVhdGUoaGFzaC53b3Jkcy5zbGljZSgwLCAxNiAvIDQpKTtcbiAgICByZXR1cm4gQ3J5cHRvSlMuQUVTLmRlY3J5cHQodGV4dCwga2V5LCB0aGlzLmNvbmZpZ3VyYXRpb24pLnRvU3RyaW5nKENyeXB0b0pTLmVuYy5VdGY4KTtcbiAgfVxuXG59XG4iXX0=
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class JwtService {
|
|
5
|
+
decodeTokenOld(token) {
|
|
6
|
+
const _decodeToken = (token) => {
|
|
7
|
+
try {
|
|
8
|
+
return JSON.parse(atob(token));
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
return token
|
|
15
|
+
.split('.')
|
|
16
|
+
.map(token => _decodeToken(token))
|
|
17
|
+
.reduce((acc, curr) => {
|
|
18
|
+
if (!!curr)
|
|
19
|
+
acc = { ...acc, ...curr };
|
|
20
|
+
return acc;
|
|
21
|
+
}, Object.create(null));
|
|
22
|
+
}
|
|
23
|
+
decodeToken(token) {
|
|
24
|
+
const payload = token.split('.')[1];
|
|
25
|
+
// Add padding if needed
|
|
26
|
+
const base64 = payload.replace(/-/g, '+').replace(/_/g, '/');
|
|
27
|
+
const padded = base64.padEnd(base64.length + (4 - base64.length % 4) % 4, '=');
|
|
28
|
+
// Decode Base64 to binary string
|
|
29
|
+
const binary = atob(padded);
|
|
30
|
+
// Convert binary string to UTF-8 correctly
|
|
31
|
+
const utf8String = decodeURIComponent(Array.from(binary)
|
|
32
|
+
.map(c => '%' + c.charCodeAt(0).toString(16).padStart(2, '0'))
|
|
33
|
+
.join(''));
|
|
34
|
+
// Parse JSON payload
|
|
35
|
+
return JSON.parse(utf8String);
|
|
36
|
+
}
|
|
37
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: JwtService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
38
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: JwtService }); }
|
|
39
|
+
}
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: JwtService, decorators: [{
|
|
41
|
+
type: Injectable
|
|
42
|
+
}] });
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zc2ktc2VjdXJpdHktY29tbW9ucy9zcmMvbGliL3NlcnZpY2VzL2p3dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9CQUFvQjtBQUNwQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUczQyxNQUFNLE9BQU8sVUFBVTtJQUVkLGNBQWMsQ0FBQyxLQUFhO1FBQ2pDLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUU7WUFDckMsSUFBSTtnQkFDRixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDaEM7WUFBQyxNQUFNO2dCQUNOLE9BQU87YUFDUjtRQUNILENBQUMsQ0FBQztRQUNGLE9BQU8sS0FBSzthQUNULEtBQUssQ0FBQyxHQUFHLENBQUM7YUFDVixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDakMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxDQUFDLElBQUk7Z0JBQUUsR0FBRyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQztZQUN0QyxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVNLFdBQVcsQ0FBQyxLQUFhO1FBQzlCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEMsd0JBQXdCO1FBQ3hCLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDN0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQy9FLGlDQUFpQztRQUNqQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUIsMkNBQTJDO1FBQzNDLE1BQU0sVUFBVSxHQUFHLGtCQUFrQixDQUNuQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQzthQUNmLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2FBQzdELElBQUksQ0FBQyxFQUFFLENBQUMsQ0FDWixDQUFDO1FBQ0YscUJBQXFCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoQyxDQUFDOzhHQWxDVSxVQUFVO2tIQUFWLFVBQVU7OzJGQUFWLFVBQVU7a0JBRHRCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSnd0U2VydmljZSB7XG5cbiAgcHVibGljIGRlY29kZVRva2VuT2xkKHRva2VuOiBzdHJpbmcpIHtcbiAgICBjb25zdCBfZGVjb2RlVG9rZW4gPSAodG9rZW46IHN0cmluZykgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoYXRvYih0b2tlbikpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiB0b2tlblxuICAgICAgLnNwbGl0KCcuJylcbiAgICAgIC5tYXAodG9rZW4gPT4gX2RlY29kZVRva2VuKHRva2VuKSlcbiAgICAgIC5yZWR1Y2UoKGFjYywgY3VycikgPT4ge1xuICAgICAgICBpZiAoISFjdXJyKSBhY2MgPSB7IC4uLmFjYywgLi4uY3VyciB9O1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSwgT2JqZWN0LmNyZWF0ZShudWxsKSk7XG4gIH1cblxuICBwdWJsaWMgZGVjb2RlVG9rZW4odG9rZW46IHN0cmluZykge1xuICAgIGNvbnN0IHBheWxvYWQgPSB0b2tlbi5zcGxpdCgnLicpWzFdO1xuICAgIC8vIEFkZCBwYWRkaW5nIGlmIG5lZWRlZFxuICAgIGNvbnN0IGJhc2U2NCA9IHBheWxvYWQucmVwbGFjZSgvLS9nLCAnKycpLnJlcGxhY2UoL18vZywgJy8nKTtcbiAgICBjb25zdCBwYWRkZWQgPSBiYXNlNjQucGFkRW5kKGJhc2U2NC5sZW5ndGggKyAoNCAtIGJhc2U2NC5sZW5ndGggJSA0KSAlIDQsICc9Jyk7XG4gICAgLy8gRGVjb2RlIEJhc2U2NCB0byBiaW5hcnkgc3RyaW5nXG4gICAgY29uc3QgYmluYXJ5ID0gYXRvYihwYWRkZWQpO1xuICAgIC8vIENvbnZlcnQgYmluYXJ5IHN0cmluZyB0byBVVEYtOCBjb3JyZWN0bHlcbiAgICBjb25zdCB1dGY4U3RyaW5nID0gZGVjb2RlVVJJQ29tcG9uZW50KFxuICAgICAgQXJyYXkuZnJvbShiaW5hcnkpXG4gICAgICAgIC5tYXAoYyA9PiAnJScgKyBjLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJykpXG4gICAgICAgIC5qb2luKCcnKVxuICAgICk7XG4gICAgLy8gUGFyc2UgSlNPTiBwYXlsb2FkXG4gICAgcmV0dXJuIEpTT04ucGFyc2UodXRmOFN0cmluZyk7XG4gIH1cblxufVxuIl19
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
// import { Router } from '@angular/router';
|
|
3
|
+
import { AlertComponent } from '../alert/alert.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "./session.service";
|
|
6
|
+
import * as i2 from "@angular/material/snack-bar";
|
|
7
|
+
import * as i3 from "@angular/material/dialog";
|
|
8
|
+
export class MessagesService {
|
|
9
|
+
constructor(auth,
|
|
10
|
+
// private router: Router,
|
|
11
|
+
snackBar, dialog, environment) {
|
|
12
|
+
this.auth = auth;
|
|
13
|
+
this.snackBar = snackBar;
|
|
14
|
+
this.dialog = dialog;
|
|
15
|
+
this.applicationId = environment.applicationId;
|
|
16
|
+
}
|
|
17
|
+
// eslint-disable-next-line max-lines-per-function, complexity
|
|
18
|
+
showErrorMessage(error, request) {
|
|
19
|
+
console.log('error: ', error);
|
|
20
|
+
this.registerLog(error, request);
|
|
21
|
+
const msgs = this.getInterceptorMessages();
|
|
22
|
+
switch (error.status) {
|
|
23
|
+
case 302: {
|
|
24
|
+
this.messageSnackError(error);
|
|
25
|
+
break;
|
|
26
|
+
}
|
|
27
|
+
case 400: {
|
|
28
|
+
if (error.error.error === 'invalid_grant') {
|
|
29
|
+
this.goNavigateLogin(msgs);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
this.showSnackError(error.message, ['snack-error']);
|
|
33
|
+
}
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
case 403: {
|
|
37
|
+
this.goNavigateLogin(msgs);
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
case 404: {
|
|
41
|
+
this.showSnackError(msgs.auth_interceptor.not_found, ['snack-error']);
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
case 409: {
|
|
45
|
+
this.messageDialog(error, msgs);
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
case 412: {
|
|
49
|
+
this.showSnackError(error.error.responseMessage ?? error.error.message, ['snack-error']);
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
case 422: {
|
|
53
|
+
this.messageDialog(error, msgs);
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
case 428: {
|
|
57
|
+
this.showSnackError(error.error.responseMessage ?? error.error.message, ['snack-error']);
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
case 500: {
|
|
61
|
+
this.messageAlertDialog(error, msgs);
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
case 503: {
|
|
65
|
+
this.showSnackError(msgs.auth_interceptor.unavailable, ['snack-error']);
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
case -1: {
|
|
69
|
+
this.showSnackError(msgs.auth_interceptor.connection_error);
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
case 0: {
|
|
73
|
+
this.showSnackError(msgs.auth_interceptor.connection_error);
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
messageSnackError(error) {
|
|
79
|
+
const errorMessage = error.error && error.error.responseMessage ? error.error.responseMessage :
|
|
80
|
+
error.error.message ? error.error.message : error.message;
|
|
81
|
+
this.showSnackError(errorMessage, ['snack-error']);
|
|
82
|
+
}
|
|
83
|
+
goNavigateLogin(msgs) {
|
|
84
|
+
// if (this.router.url !== '/login') {
|
|
85
|
+
this.showSnackError(msgs.auth_interceptor.session_lost, ['snack-error']);
|
|
86
|
+
// this.router.navigate(['/login']);
|
|
87
|
+
this.auth.destroyCredentials();
|
|
88
|
+
this.auth.getLoginUrl().subscribe(res => {
|
|
89
|
+
console.log(res);
|
|
90
|
+
const loginUrl = res.data;
|
|
91
|
+
const url = window.location.href;
|
|
92
|
+
if (url.indexOf(loginUrl) < 0) {
|
|
93
|
+
window.location.href = loginUrl + '?continue=' + encodeURIComponent(url);
|
|
94
|
+
}
|
|
95
|
+
}, (err) => {
|
|
96
|
+
console.error(err);
|
|
97
|
+
});
|
|
98
|
+
// }
|
|
99
|
+
}
|
|
100
|
+
messageAlertDialog(error, msgs) {
|
|
101
|
+
console.log(error);
|
|
102
|
+
let message = '';
|
|
103
|
+
if (error.error.description) {
|
|
104
|
+
message = error.error.description;
|
|
105
|
+
if (error.error.exception) {
|
|
106
|
+
message = message + '\n\n' + msgs.auth_interceptor.code + ': ' + error.error.exception;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
else if (error.error.responseMessage) {
|
|
110
|
+
message = error.error.responseMessage;
|
|
111
|
+
if (error.error.exceptionId) {
|
|
112
|
+
message = message + '\n\n' + msgs.auth_interceptor.code + ': ' + error.error.exceptionId;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
else if (error.error.message) {
|
|
116
|
+
message = error.error.message;
|
|
117
|
+
if (error.error.exceptionId) {
|
|
118
|
+
message = message + '\n\n' + msgs.auth_interceptor.code + ': ' + error.error.exceptionId;
|
|
119
|
+
}
|
|
120
|
+
if (error.error.referenceError) {
|
|
121
|
+
message = message + '\n\n' + msgs.auth_interceptor.code + ': ' + error.error.referenceError;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
else if (error.message) {
|
|
125
|
+
message = error.message;
|
|
126
|
+
if (error.error.exceptionId) {
|
|
127
|
+
message = message + '\n\n' + msgs.auth_interceptor.code + ': ' + error.error.exceptionId;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
message = msgs.auth_interceptor.message;
|
|
132
|
+
}
|
|
133
|
+
this.dialog.open(AlertComponent, {
|
|
134
|
+
disableClose: true,
|
|
135
|
+
data: { title: msgs.auth_interceptor.title, message, icon: 'warn', okText: msgs.auth_interceptor.accept_text }
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
messageDialog(error, msgs) {
|
|
139
|
+
console.log(error);
|
|
140
|
+
let message = '';
|
|
141
|
+
if (error.error.description) {
|
|
142
|
+
message = error.error.description;
|
|
143
|
+
}
|
|
144
|
+
else if (error.error.responseMessage) {
|
|
145
|
+
message = error.error.responseMessage;
|
|
146
|
+
}
|
|
147
|
+
else if (error.error.message) {
|
|
148
|
+
message = error.error.message;
|
|
149
|
+
}
|
|
150
|
+
else if (error.message) {
|
|
151
|
+
message = error.message;
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
message = msgs.auth_interceptor.message;
|
|
155
|
+
}
|
|
156
|
+
this.dialog.open(AlertComponent, {
|
|
157
|
+
disableClose: true,
|
|
158
|
+
data: { title: msgs.auth_interceptor.title, message, icon: 'warn', okText: msgs.auth_interceptor.accept_text }
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
showSnackError(message, panelClass = []) {
|
|
162
|
+
console.log(message);
|
|
163
|
+
setTimeout(() => {
|
|
164
|
+
this.snackBar.open(message, undefined, {
|
|
165
|
+
duration: 5000,
|
|
166
|
+
panelClass,
|
|
167
|
+
verticalPosition: 'top'
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
setInterceptorMessages(message) {
|
|
172
|
+
this.interceptorMessages = message;
|
|
173
|
+
}
|
|
174
|
+
// eslint-disable-next-line max-lines-per-function
|
|
175
|
+
getInterceptorMessages() {
|
|
176
|
+
if (!this.interceptorMessages) {
|
|
177
|
+
let lang = window.localStorage.getItem('LANG');
|
|
178
|
+
if (!lang) {
|
|
179
|
+
const userLang = navigator.language;
|
|
180
|
+
lang = userLang.split('-')[0];
|
|
181
|
+
}
|
|
182
|
+
const messagesEn = {
|
|
183
|
+
auth_interceptor: {
|
|
184
|
+
session_lost: 'Session lost, you have to login again.',
|
|
185
|
+
not_found: 'Resource not found',
|
|
186
|
+
title: 'We are sorry',
|
|
187
|
+
message: 'We had a problem trying to process your request.',
|
|
188
|
+
code: 'Code',
|
|
189
|
+
unavailable: 'Service unavailable, please try again in a few minutes.',
|
|
190
|
+
connection_error: 'Could not connect to server, please check your network connection.',
|
|
191
|
+
accept_text: 'OK',
|
|
192
|
+
cancel_text: 'Cancel'
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
const messagesEs = {
|
|
196
|
+
auth_interceptor: {
|
|
197
|
+
session_lost: 'Su sesión expiró, debe iniciar sesión nuevamente.',
|
|
198
|
+
not_found: 'Recurso no encontrado',
|
|
199
|
+
title: 'Lo sentimos',
|
|
200
|
+
message: 'Tuvimos un problema al tratar de procesar su solicitud.',
|
|
201
|
+
code: 'Código',
|
|
202
|
+
unavailable: 'Servicio no disponible, inténtelo de nuevo en unos minutos.',
|
|
203
|
+
connection_error: 'No se pudo conectar al servidor, verifique su conexión de red.',
|
|
204
|
+
accept_text: 'Aceptar',
|
|
205
|
+
cancel_text: 'Cancelar'
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
if (lang && lang === 'es') {
|
|
209
|
+
this.interceptorMessages = messagesEs;
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
this.interceptorMessages = messagesEn;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return this.interceptorMessages;
|
|
216
|
+
}
|
|
217
|
+
registerLog(error, request) {
|
|
218
|
+
const u = this.auth.getUserdata();
|
|
219
|
+
const param = {
|
|
220
|
+
httpStatus: error.status,
|
|
221
|
+
httpStatusText: error.statusText,
|
|
222
|
+
errorMessage: error.message,
|
|
223
|
+
currentUrl: window.location.href,
|
|
224
|
+
requestUrl: request.urlWithParams ? request.urlWithParams : undefined,
|
|
225
|
+
requestBody: request.body ? JSON.stringify(request.body) : undefined,
|
|
226
|
+
userId: u ? u.userId : undefined,
|
|
227
|
+
applicationId: this.applicationId,
|
|
228
|
+
requestDate: new Date()
|
|
229
|
+
};
|
|
230
|
+
this.auth.registerException(param).subscribe({
|
|
231
|
+
next: (response) => {
|
|
232
|
+
console.log('registerException', response);
|
|
233
|
+
},
|
|
234
|
+
error: (err) => {
|
|
235
|
+
console.error('registerException', err);
|
|
236
|
+
}
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: MessagesService, deps: [{ token: i1.SessionService }, { token: i2.MatSnackBar }, { token: i3.MatDialog }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
240
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: MessagesService }); }
|
|
241
|
+
}
|
|
242
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: MessagesService, decorators: [{
|
|
243
|
+
type: Injectable
|
|
244
|
+
}], ctorParameters: function () { return [{ type: i1.SessionService }, { type: i2.MatSnackBar }, { type: i3.MatDialog }, { type: undefined, decorators: [{
|
|
245
|
+
type: Inject,
|
|
246
|
+
args: ['environment']
|
|
247
|
+
}] }]; } });
|
|
248
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NzaS1zZWN1cml0eS1jb21tb25zL3NyYy9saWIvc2VydmljZXMvbWVzc2FnZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduRCw0Q0FBNEM7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7OztBQU0xRCxNQUFNLE9BQU8sZUFBZTtJQUsxQixZQUNTLElBQW9CO0lBQzNCLDBCQUEwQjtJQUNsQixRQUFxQixFQUN0QixNQUFpQixFQUNELFdBQWdCO1FBSmhDLFNBQUksR0FBSixJQUFJLENBQWdCO1FBRW5CLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDdEIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUd4QixJQUFJLENBQUMsYUFBYSxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUM7SUFDakQsQ0FBQztJQUdELDhEQUE4RDtJQUM5RCxnQkFBZ0IsQ0FBQyxLQUF3QixFQUFFLE9BQXlCO1FBQ2xFLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sSUFBSSxHQUFRLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ2hELFFBQVEsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNwQixLQUFLLEdBQUcsQ0FBQyxDQUFDO2dCQUNSLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDOUIsTUFBTTthQUNQO1lBQ0QsS0FBSyxHQUFHLENBQUMsQ0FBQztnQkFDUixJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLGVBQWUsRUFBRTtv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Q0FBQyxDQUFDLFNBQVM7WUFDN0IsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2pDLFdBQVcsRUFBRSxJQUFJLElBQUksRUFBRTtTQUN4QixDQUFDO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDM0MsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ2pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDN0MsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNsQixPQUFPLENBQUMsS0FBSyxDQUFDLG1CQUFtQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzFDLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOzhHQXZPVSxlQUFlLG9HQVVoQixhQUFhO2tIQVZaLGVBQWU7OzJGQUFmLGVBQWU7a0JBRDNCLFVBQVU7OzBCQVdOLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxpbmVzLXBlci1mdW5jdGlvbiAqL1xuLyogZXNsaW50LWRpc2FibGUgcXVvdGUtcHJvcHMgKi9cbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwUmVxdWVzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbi8vIGltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBbGVydENvbXBvbmVudCB9IGZyb20gJy4uL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGcm9udEVuZEV4Y2VwdGlvbiB9IGZyb20gJy4uL3VzZXIubW9kZWwnO1xuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuL3Nlc3Npb24uc2VydmljZSc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VzU2VydmljZSB7XG5cbiAgcHJpdmF0ZSBpbnRlcmNlcHRvck1lc3NhZ2VzOiBhbnk7XG4gIGFwcGxpY2F0aW9uSWQ6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgYXV0aDogU2Vzc2lvblNlcnZpY2UsXG4gICAgLy8gcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBNYXRTbmFja0JhcixcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgQEluamVjdCgnZW52aXJvbm1lbnQnKSBlbnZpcm9ubWVudDogYW55XG4gICkge1xuICAgIHRoaXMuYXBwbGljYXRpb25JZCA9IGVudmlyb25tZW50LmFwcGxpY2F0aW9uSWQ7XG4gIH1cblxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGluZXMtcGVyLWZ1bmN0aW9uLCBjb21wbGV4aXR5XG4gIHNob3dFcnJvck1lc3NhZ2UoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlLCByZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+KTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ2Vycm9yOiAnLCBlcnJvcik7XG4gICAgdGhpcy5yZWdpc3RlckxvZyhlcnJvciwgcmVxdWVzdCk7XG4gICAgY29uc3QgbXNnczogYW55ID0gdGhpcy5nZXRJbnRlcmNlcHRvck1lc3NhZ2VzKCk7XG4gICAgc3dpdGNoIChlcnJvci5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMzAyOiB7XG4gICAgICAgIHRoaXMubWVzc2FnZVNuYWNrRXJyb3IoZXJyb3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgNDAwOiB7XG4gICAgICAgIGlmIChlcnJvci5lcnJvci5lcnJvciA9PT0gJ2ludmFsaWRfZ3JhbnQnKSB7XG4gICAgICAgICAgdGhpcy5nb05hdmlnYXRlTG9naW4obXNncyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zaG93U25hY2tFcnJvcihlcnJvci5tZXNzYWdlLCBbJ3NuYWNrLWVycm9yJ10pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSA0MDM6IHtcbiAgICAgICAgdGhpcy5nb05hdmlnYXRlTG9naW4obXNncyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSA0MDQ6IHtcbiAgICAgICAgdGhpcy5zaG93U25hY2tFcnJvcihtc2dzLmF1dGhfaW50ZXJjZXB0b3Iubm90X2ZvdW5kLCBbJ3NuYWNrLWVycm9yJ10pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgNDA5OiB7XG4gICAgICAgIHRoaXMubWVzc2FnZURpYWxvZyhlcnJvciwgbXNncyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSA0MTI6IHtcbiAgICAgICAgdGhpcy5zaG93U25hY2tFcnJvcihlcnJvci5lcnJvci5yZXNwb25zZU1lc3NhZ2U/P2Vycm9yLmVycm9yLm1lc3NhZ2UsIFsnc25hY2stZXJyb3InXSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSA0MjI6IHtcbiAgICAgICAgdGhpcy5tZXNzYWdlRGlhbG9nKGVycm9yLCBtc2dzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDQyODoge1xuICAgICAgICB0aGlzLnNob3dTbmFja0Vycm9yKGVycm9yLmVycm9yLnJlc3BvbnNlTWVzc2FnZT8/ZXJyb3IuZXJyb3IubWVzc2FnZSwgWydzbmFjay1lcnJvciddKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDUwMDoge1xuICAgICAgICB0aGlzLm1lc3NhZ2VBbGVydERpYWxvZyhlcnJvciwgbXNncyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSA1MDM6IHtcbiAgICAgICAgdGhpcy5zaG93U25hY2tFcnJvcihtc2dzLmF1dGhfaW50ZXJjZXB0b3IudW5hdmFpbGFibGUsIFsnc25hY2stZXJyb3InXSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAtMToge1xuICAgICAgICB0aGlzLnNob3dTbmFja0Vycm9yKG1zZ3MuYXV0aF9pbnRlcmNlcHRvci5jb25uZWN0aW9uX2Vycm9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDA6IHtcbiAgICAgICAgdGhpcy5zaG93U25hY2tFcnJvcihtc2dzLmF1dGhfaW50ZXJjZXB0b3IuY29ubmVjdGlvbl9lcnJvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG1lc3NhZ2VTbmFja0Vycm9yKGVycm9yOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvci5lcnJvciAmJiBlcnJvci5lcnJvci5yZXNwb25zZU1lc3NhZ2UgPyBlcnJvci5lcnJvci5yZXNwb25zZU1lc3NhZ2UgOlxuICAgICAgZXJyb3IuZXJyb3IubWVzc2FnZSA/IGVycm9yLmVycm9yLm1lc3NhZ2UgOiBlcnJvci5tZXNzYWdlO1xuICAgIHRoaXMuc2hvd1NuYWNrRXJyb3IoZXJyb3JNZXNzYWdlLCBbJ3NuYWNrLWVycm9yJ10pO1xuICB9XG5cbiAgZ29OYXZpZ2F0ZUxvZ2luKG1zZ3M6IGFueSk6IHZvaWQge1xuICAgIC8vIGlmICh0aGlzLnJvdXRlci51cmwgIT09ICcvbG9naW4nKSB7XG4gICAgdGhpcy5zaG93U25hY2tFcnJvcihtc2dzLmF1dGhfaW50ZXJjZXB0b3Iuc2Vzc2lvbl9sb3N0LCBbJ3NuYWNrLWVycm9yJ10pO1xuICAgIC8vIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2xvZ2luJ10pO1xuICAgIHRoaXMuYXV0aC5kZXN0cm95Q3JlZGVudGlhbHMoKTtcbiAgICB0aGlzLmF1dGguZ2V0TG9naW5VcmwoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKHJlcyk7XG4gICAgICBjb25zdCBsb2dpblVybCA9IHJlcy5kYXRhO1xuICAgICAgY29uc3QgdXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gICAgICBpZiAodXJsLmluZGV4T2YobG9naW5VcmwpPDApIHtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBsb2dpblVybCArICc/Y29udGludWU9JytlbmNvZGVVUklDb21wb25lbnQodXJsKTtcbiAgICAgIH1cbiAgICB9LCAoZXJyKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgfSk7XG4gICAgLy8gfVxuICB9XG5cbiAgbWVzc2FnZUFsZXJ0RGlhbG9nKGVycm9yOiBhbnksIG1zZ3M6IGFueSk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICBsZXQgbWVzc2FnZSA9ICcnO1xuICAgIGlmIChlcnJvci5lcnJvci5kZXNjcmlwdGlvbikge1xuICAgICAgbWVzc2FnZSA9IGVycm9yLmVycm9yLmRlc2NyaXB0aW9uO1xuICAgICAgaWYgKGVycm9yLmVycm9yLmV4Y2VwdGlvbilcbiAgICAgIHttZXNzYWdlID0gbWVzc2FnZSArICdcXG5cXG4nK21zZ3MuYXV0aF9pbnRlcmNlcHRvci5jb2RlKyc6ICcgKyBlcnJvci5lcnJvci5leGNlcHRpb247fVxuICAgIH0gZWxzZSBpZiAoZXJyb3IuZXJyb3IucmVzcG9uc2VNZXNzYWdlKSB7XG4gICAgICBtZXNzYWdlID0gZXJyb3IuZXJyb3IucmVzcG9uc2VNZXNzYWdlO1xuICAgICAgaWYgKGVycm9yLmVycm9yLmV4Y2VwdGlvbklkKVxuICAgICAge21lc3NhZ2UgPSBtZXNzYWdlICsgJ1xcblxcbicrbXNncy5hdXRoX2ludGVyY2VwdG9yLmNvZGUrJzogJyArIGVycm9yLmVycm9yLmV4Y2VwdGlvbklkO31cbiAgICB9IGVsc2UgaWYgKGVycm9yLmVycm9yLm1lc3NhZ2UpIHtcbiAgICAgIG1lc3NhZ2UgPSBlcnJvci5lcnJvci5tZXNzYWdlO1xuICAgICAgaWYgKGVycm9yLmVycm9yLmV4Y2VwdGlvbklkKVxuICAgICAge21lc3NhZ2UgPSBtZXNzYWdlICsgJ1xcblxcbicrbXNncy5hdXRoX2ludGVyY2VwdG9yLmNvZGUrJzogJyArIGVycm9yLmVycm9yLmV4Y2VwdGlvbklkO31cbiAgICAgIGlmIChlcnJvci5lcnJvci5yZWZlcmVuY2VFcnJvcilcbiAgICAgIHttZXNzYWdlID0gbWVzc2FnZSArICdcXG5cXG4nK21zZ3MuYXV0aF9pbnRlcmNlcHRvci5jb2RlKyc6ICcgKyBlcnJvci5lcnJvci5yZWZlcmVuY2VFcnJvcjt9XG4gICAgfSAgZWxzZSBpZiAoZXJyb3IubWVzc2FnZSkge1xuICAgICAgbWVzc2FnZSA9IGVycm9yLm1lc3NhZ2U7XG4gICAgICBpZiAoZXJyb3IuZXJyb3IuZXhjZXB0aW9uSWQpXG4gICAgICB7bWVzc2FnZSA9IG1lc3NhZ2UgKyAnXFxuXFxuJyttc2dzLmF1dGhfaW50ZXJjZXB0b3IuY29kZSsnOiAnICsgZXJyb3IuZXJyb3IuZXhjZXB0aW9uSWQ7fVxuICAgIH0gZWxzZSB7XG4gICAgICBtZXNzYWdlID0gbXNncy5hdXRoX2ludGVyY2VwdG9yLm1lc3NhZ2U7XG4gICAgfVxuICAgIHRoaXMuZGlhbG9nLm9wZW4oQWxlcnRDb21wb25lbnQsIHtcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcbiAgICAgIGRhdGE6IHt0aXRsZTogbXNncy5hdXRoX2ludGVyY2VwdG9yLnRpdGxlLCBtZXNzYWdlLCBpY29uOid3YXJuJywgb2tUZXh0Om1zZ3MuYXV0aF9pbnRlcmNlcHRvci5hY2NlcHRfdGV4dH1cbiAgICB9KTtcbiAgfVxuXG4gIG1lc3NhZ2VEaWFsb2coZXJyb3I6IGFueSwgbXNnczogYW55KTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgIGxldCBtZXNzYWdlID0gJyc7XG4gICAgaWYgKGVycm9yLmVycm9yLmRlc2NyaXB0aW9uKSB7XG4gICAgICBtZXNzYWdlID0gZXJyb3IuZXJyb3IuZGVzY3JpcHRpb247XG4gICAgfSBlbHNlIGlmIChlcnJvci5lcnJvci5yZXNwb25zZU1lc3NhZ2UpIHtcbiAgICAgIG1lc3NhZ2UgPSBlcnJvci5lcnJvci5yZXNwb25zZU1lc3NhZ2U7XG4gICAgfSBlbHNlIGlmIChlcnJvci5lcnJvci5tZXNzYWdlKSB7XG4gICAgICBtZXNzYWdlID0gZXJyb3IuZXJyb3IubWVzc2FnZTtcbiAgICB9ICBlbHNlIGlmIChlcnJvci5tZXNzYWdlKSB7XG4gICAgICBtZXNzYWdlID0gZXJyb3IubWVzc2FnZTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWVzc2FnZSA9IG1zZ3MuYXV0aF9pbnRlcmNlcHRvci5tZXNzYWdlO1xuICAgIH1cbiAgICB0aGlzLmRpYWxvZy5vcGVuKEFsZXJ0Q29tcG9uZW50LCB7XG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXG4gICAgICBkYXRhOiB7dGl0bGU6IG1zZ3MuYXV0aF9pbnRlcmNlcHRvci50aXRsZSwgbWVzc2FnZSwgaWNvbjond2FybicsIG9rVGV4dDptc2dzLmF1dGhfaW50ZXJjZXB0b3IuYWNjZXB0X3RleHR9XG4gICAgfSk7XG4gIH1cblxuICBzaG93U25hY2tFcnJvcihtZXNzYWdlOiBhbnksIHBhbmVsQ2xhc3M6IGFueVtdID0gW10pOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZyhtZXNzYWdlKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc25hY2tCYXIub3BlbihtZXNzYWdlLCB1bmRlZmluZWQsIHtcbiAgICAgICAgZHVyYXRpb246IDUwMDAsXG4gICAgICAgIHBhbmVsQ2xhc3MsXG4gICAgICAgIHZlcnRpY2FsUG9zaXRpb246ICd0b3AnXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHNldEludGVyY2VwdG9yTWVzc2FnZXMobWVzc2FnZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5pbnRlcmNlcHRvck1lc3NhZ2VzID0gbWVzc2FnZTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGluZXMtcGVyLWZ1bmN0aW9uXG4gIGdldEludGVyY2VwdG9yTWVzc2FnZXMoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuaW50ZXJjZXB0b3JNZXNzYWdlcykge1xuICAgICAgbGV0IGxhbmcgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0xBTkcnKTtcbiAgICAgIGlmICghbGFuZykge1xuICAgICAgICBjb25zdCB1c2VyTGFuZyA9IG5hdmlnYXRvci5sYW5ndWFnZTtcbiAgICAgICAgbGFuZyA9IHVzZXJMYW5nLnNwbGl0KCctJylbMF07XG4gICAgICB9XG4gICAgICBjb25zdCBtZXNzYWdlc0VuID0ge1xuICAgICAgICBhdXRoX2ludGVyY2VwdG9yIDoge1xuICAgICAgICAgIHNlc3Npb25fbG9zdCA6J1Nlc3Npb24gbG9zdCwgeW91IGhhdmUgdG8gbG9naW4gYWdhaW4uJyxcbiAgICAgICAgICBub3RfZm91bmQ6ICdSZXNvdXJjZSBub3QgZm91bmQnLFxuICAgICAgICAgIHRpdGxlOiAnV2UgYXJlIHNvcnJ5JyxcbiAgICAgICAgICBtZXNzYWdlOiAnV2UgaGFkIGEgcHJvYmxlbSB0cnlpbmcgdG8gcHJvY2VzcyB5b3VyIHJlcXVlc3QuJyxcbiAgICAgICAgICBjb2RlOidDb2RlJyxcbiAgICAgICAgICB1bmF2YWlsYWJsZTonU2VydmljZSB1bmF2YWlsYWJsZSwgcGxlYXNlIHRyeSBhZ2FpbiBpbiBhIGZldyBtaW51dGVzLicsXG4gICAgICAgICAgY29ubmVjdGlvbl9lcnJvcjonQ291bGQgbm90IGNvbm5lY3QgdG8gc2VydmVyLCBwbGVhc2UgY2hlY2sgeW91ciBuZXR3b3JrIGNvbm5lY3Rpb24uJyxcbiAgICAgICAgICBhY2NlcHRfdGV4dDogJ09LJyxcbiAgICAgICAgICBjYW5jZWxfdGV4dDogJ0NhbmNlbCdcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGNvbnN0IG1lc3NhZ2VzRXMgPSB7XG4gICAgICAgIGF1dGhfaW50ZXJjZXB0b3I6IHtcbiAgICAgICAgICBzZXNzaW9uX2xvc3Q6ICdTdSBzZXNpw7NuIGV4cGlyw7MsIGRlYmUgaW5pY2lhciBzZXNpw7NuIG51ZXZhbWVudGUuJyxcbiAgICAgICAgICBub3RfZm91bmQ6ICdSZWN1cnNvIG5vIGVuY29udHJhZG8nLFxuICAgICAgICAgIHRpdGxlOiAnTG8gc2VudGltb3MnLFxuICAgICAgICAgIG1lc3NhZ2U6ICdUdXZpbW9zIHVuIHByb2JsZW1hIGFsIHRyYXRhciBkZSBwcm9jZXNhciBzdSBzb2xpY2l0dWQuJyxcbiAgICAgICAgICBjb2RlOiAnQ8OzZGlnbycsXG4gICAgICAgICAgdW5hdmFpbGFibGU6ICdTZXJ2aWNpbyBubyBkaXNwb25pYmxlLCBpbnTDqW50ZWxvIGRlIG51ZXZvIGVuIHVub3MgbWludXRvcy4nLFxuICAgICAgICAgIGNvbm5lY3Rpb25fZXJyb3I6ICdObyBzZSBwdWRvIGNvbmVjdGFyIGFsIHNlcnZpZG9yLCB2ZXJpZmlxdWUgc3UgY29uZXhpw7NuIGRlIHJlZC4nLFxuICAgICAgICAgIGFjY2VwdF90ZXh0OiAnQWNlcHRhcicsXG4gICAgICAgICAgY2FuY2VsX3RleHQ6ICdDYW5jZWxhcidcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGlmIChsYW5nICYmIGxhbmc9PT0nZXMnKSB7XG4gICAgICAgIHRoaXMuaW50ZXJjZXB0b3JNZXNzYWdlcyA9IG1lc3NhZ2VzRXM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmludGVyY2VwdG9yTWVzc2FnZXMgPSBtZXNzYWdlc0VuO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pbnRlcmNlcHRvck1lc3NhZ2VzO1xuICB9XG5cblxuICByZWdpc3RlckxvZyhlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UsIHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4pOiB2b2lkIHtcbiAgICBjb25zdCB1ID0gdGhpcy5hdXRoLmdldFVzZXJkYXRhKCk7XG4gICAgY29uc3QgcGFyYW06IEZyb250RW5kRXhjZXB0aW9uID0ge1xuICAgICAgaHR0cFN0YXR1czogZXJyb3Iuc3RhdHVzLFxuICAgICAgaHR0cFN0YXR1c1RleHQ6IGVycm9yLnN0YXR1c1RleHQsXG4gICAgICBlcnJvck1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UsXG4gICAgICBjdXJyZW50VXJsOiB3aW5kb3cubG9jYXRpb24uaHJlZixcbiAgICAgIHJlcXVlc3RVcmw6IHJlcXVlc3QudXJsV2l0aFBhcmFtcz9yZXF1ZXN0LnVybFdpdGhQYXJhbXM6IHVuZGVmaW5lZCxcbiAgICAgIHJlcXVlc3RCb2R5OiByZXF1ZXN0LmJvZHk/SlNPTi5zdHJpbmdpZnkocmVxdWVzdC5ib2R5KTp1bmRlZmluZWQsXG4gICAgICB1c2VySWQ6IHU/dS51c2VySWQ6IHVuZGVmaW5lZCxcbiAgICAgIGFwcGxpY2F0aW9uSWQ6IHRoaXMuYXBwbGljYXRpb25JZCxcbiAgICAgIHJlcXVlc3REYXRlOiBuZXcgRGF0ZSgpXG4gICAgfTtcbiAgICB0aGlzLmF1dGgucmVnaXN0ZXJFeGNlcHRpb24ocGFyYW0pLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ3JlZ2lzdGVyRXhjZXB0aW9uJywgcmVzcG9uc2UpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcigncmVnaXN0ZXJFeGNlcHRpb24nLCBlcnIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbn1cbiJdfQ==
|