@igo2/auth 1.14.3 → 1.14.4
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/esm2020/igo2-auth.mjs +4 -4
- package/esm2020/lib/auth-form/auth-facebook.component.mjs +60 -60
- package/esm2020/lib/auth-form/auth-form.component.mjs +276 -276
- package/esm2020/lib/auth-form/auth-google.component.mjs +98 -98
- package/esm2020/lib/auth-form/auth-intern.component.mjs +118 -118
- package/esm2020/lib/auth-form/auth-microsoft.component.mjs +93 -93
- package/esm2020/lib/auth-form/auth-microsoftb2c.component.mjs +92 -92
- package/esm2020/lib/auth-form/index.mjs +4 -4
- package/esm2020/lib/auth-routing.module.mjs +23 -23
- package/esm2020/lib/auth.module.mjs +90 -90
- package/esm2020/lib/shared/admin.guard.mjs +32 -32
- package/esm2020/lib/shared/auth-microsoft.provider.mjs +83 -83
- package/esm2020/lib/shared/auth-msalBroadcastServiceb2c.service.mjs +37 -37
- package/esm2020/lib/shared/auth-msalServiceb2c.service..mjs +79 -79
- package/esm2020/lib/shared/auth.guard.mjs +31 -31
- package/esm2020/lib/shared/auth.interceptor.mjs +154 -154
- package/esm2020/lib/shared/auth.interface.mjs +1 -1
- package/esm2020/lib/shared/auth.service.mjs +159 -159
- package/esm2020/lib/shared/logged.guard.mjs +31 -31
- package/esm2020/lib/shared/profils.guard.mjs +36 -36
- package/esm2020/lib/shared/protected.directive.mjs +18 -18
- package/esm2020/lib/shared/storage.interface.mjs +1 -1
- package/esm2020/lib/shared/storage.service.mjs +90 -90
- package/esm2020/lib/shared/token.service.mjs +46 -46
- package/esm2020/public_api.mjs +18 -18
- package/fesm2015/igo2-auth.mjs +1579 -1579
- package/fesm2020/igo2-auth.mjs +1477 -1477
- package/index.d.ts +5 -5
- package/lib/auth-form/auth-facebook.component.d.ts +18 -18
- package/lib/auth-form/auth-form.component.d.ts +42 -42
- package/lib/auth-form/auth-google.component.d.ts +24 -24
- package/lib/auth-form/auth-intern.component.d.ts +21 -21
- package/lib/auth-form/auth-microsoft.component.d.ts +23 -23
- package/lib/auth-form/auth-microsoftb2c.component.d.ts +23 -23
- package/lib/auth-form/index.d.ts +4 -4
- package/lib/auth-routing.module.d.ts +7 -7
- package/lib/auth.module.d.ts +23 -23
- package/lib/shared/admin.guard.d.ts +13 -13
- package/lib/shared/auth-microsoft.provider.d.ts +30 -30
- package/lib/shared/auth-msalBroadcastServiceb2c.service.d.ts +15 -15
- package/lib/shared/auth-msalServiceb2c.service..d.ts +33 -33
- package/lib/shared/auth.guard.d.ts +13 -13
- package/lib/shared/auth.interceptor.d.ts +24 -24
- package/lib/shared/auth.interface.d.ts +99 -99
- package/lib/shared/auth.service.d.ts +44 -44
- package/lib/shared/logged.guard.d.ts +13 -13
- package/lib/shared/profils.guard.d.ts +13 -13
- package/lib/shared/protected.directive.d.ts +8 -8
- package/lib/shared/storage.interface.d.ts +4 -4
- package/lib/shared/storage.service.d.ts +18 -18
- package/lib/shared/token.service.d.ts +15 -15
- package/package.json +3 -3
- package/public_api.d.ts +15 -15
|
@@ -1,80 +1,80 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
import { Inject, Injectable } from '@angular/core';
|
|
6
|
-
import { WrapperSKU } from '@azure/msal-browser';
|
|
7
|
-
import { MSAL_INSTANCE } from '@azure/msal-angular';
|
|
8
|
-
import { from } from 'rxjs';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "@angular/common";
|
|
11
|
-
export class MsalServiceb2c {
|
|
12
|
-
constructor(instance, location) {
|
|
13
|
-
this.instance = instance;
|
|
14
|
-
this.location = location;
|
|
15
|
-
this.name = '@azure/msal-angular';
|
|
16
|
-
this.version = '2.0.0-beta.2';
|
|
17
|
-
const hash = this.location.path(true).split('#').pop();
|
|
18
|
-
if (hash) {
|
|
19
|
-
this.redirectHash = `#${hash}`;
|
|
20
|
-
}
|
|
21
|
-
this.instance.initializeWrapperLibrary(WrapperSKU.Angular, this.version);
|
|
22
|
-
}
|
|
23
|
-
initialize() {
|
|
24
|
-
return from(this.instance.initialize());
|
|
25
|
-
}
|
|
26
|
-
acquireTokenPopup(request) {
|
|
27
|
-
return from(this.instance.acquireTokenPopup(request));
|
|
28
|
-
}
|
|
29
|
-
acquireTokenRedirect(request) {
|
|
30
|
-
return from(this.instance.acquireTokenRedirect(request));
|
|
31
|
-
}
|
|
32
|
-
acquireTokenSilent(silentRequest) {
|
|
33
|
-
return from(this.instance.acquireTokenSilent(silentRequest));
|
|
34
|
-
}
|
|
35
|
-
handleRedirectObservable(hash) {
|
|
36
|
-
return from(this.instance.handleRedirectPromise(hash || this.redirectHash));
|
|
37
|
-
}
|
|
38
|
-
loginPopup(request) {
|
|
39
|
-
return from(this.instance.loginPopup(request));
|
|
40
|
-
}
|
|
41
|
-
loginRedirect(request) {
|
|
42
|
-
return from(this.instance.loginRedirect(request));
|
|
43
|
-
}
|
|
44
|
-
logout(logoutRequest) {
|
|
45
|
-
return from(this.instance.logout(logoutRequest));
|
|
46
|
-
}
|
|
47
|
-
logoutRedirect(logoutRequest) {
|
|
48
|
-
return from(this.instance.logoutRedirect(logoutRequest));
|
|
49
|
-
}
|
|
50
|
-
logoutPopup(logoutRequest) {
|
|
51
|
-
return from(this.instance.logoutPopup(logoutRequest));
|
|
52
|
-
}
|
|
53
|
-
ssoSilent(request) {
|
|
54
|
-
return from(this.instance.ssoSilent(request));
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Gets logger for msal-angular.
|
|
58
|
-
* If no logger set, returns logger instance created with same options as msal-browser
|
|
59
|
-
*/
|
|
60
|
-
getLogger() {
|
|
61
|
-
if (!this.logger) {
|
|
62
|
-
this.logger = this.instance.getLogger().clone(this.name, this.version);
|
|
63
|
-
}
|
|
64
|
-
return this.logger;
|
|
65
|
-
}
|
|
66
|
-
// Create a logger instance for msal-angular with the same options as msal-browser
|
|
67
|
-
setLogger(logger) {
|
|
68
|
-
this.logger = logger.clone(this.name, this.version);
|
|
69
|
-
this.instance.setLogger(logger);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
MsalServiceb2c.ɵfac = function MsalServiceb2c_Factory(t) { return new (t || MsalServiceb2c)(i0.ɵɵinject(MSAL_INSTANCE), i0.ɵɵinject(i1.Location)); };
|
|
73
|
-
MsalServiceb2c.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MsalServiceb2c, factory: MsalServiceb2c.ɵfac });
|
|
74
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MsalServiceb2c, [{
|
|
75
|
-
type: Injectable
|
|
76
|
-
}], function () { return [{ type: undefined, decorators: [{
|
|
77
|
-
type: Inject,
|
|
78
|
-
args: [MSAL_INSTANCE]
|
|
79
|
-
}] }, { type: i1.Location }]; }, null); })();
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
import { Inject, Injectable } from '@angular/core';
|
|
6
|
+
import { WrapperSKU } from '@azure/msal-browser';
|
|
7
|
+
import { MSAL_INSTANCE } from '@azure/msal-angular';
|
|
8
|
+
import { from } from 'rxjs';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@angular/common";
|
|
11
|
+
export class MsalServiceb2c {
|
|
12
|
+
constructor(instance, location) {
|
|
13
|
+
this.instance = instance;
|
|
14
|
+
this.location = location;
|
|
15
|
+
this.name = '@azure/msal-angular';
|
|
16
|
+
this.version = '2.0.0-beta.2';
|
|
17
|
+
const hash = this.location.path(true).split('#').pop();
|
|
18
|
+
if (hash) {
|
|
19
|
+
this.redirectHash = `#${hash}`;
|
|
20
|
+
}
|
|
21
|
+
this.instance.initializeWrapperLibrary(WrapperSKU.Angular, this.version);
|
|
22
|
+
}
|
|
23
|
+
initialize() {
|
|
24
|
+
return from(this.instance.initialize());
|
|
25
|
+
}
|
|
26
|
+
acquireTokenPopup(request) {
|
|
27
|
+
return from(this.instance.acquireTokenPopup(request));
|
|
28
|
+
}
|
|
29
|
+
acquireTokenRedirect(request) {
|
|
30
|
+
return from(this.instance.acquireTokenRedirect(request));
|
|
31
|
+
}
|
|
32
|
+
acquireTokenSilent(silentRequest) {
|
|
33
|
+
return from(this.instance.acquireTokenSilent(silentRequest));
|
|
34
|
+
}
|
|
35
|
+
handleRedirectObservable(hash) {
|
|
36
|
+
return from(this.instance.handleRedirectPromise(hash || this.redirectHash));
|
|
37
|
+
}
|
|
38
|
+
loginPopup(request) {
|
|
39
|
+
return from(this.instance.loginPopup(request));
|
|
40
|
+
}
|
|
41
|
+
loginRedirect(request) {
|
|
42
|
+
return from(this.instance.loginRedirect(request));
|
|
43
|
+
}
|
|
44
|
+
logout(logoutRequest) {
|
|
45
|
+
return from(this.instance.logout(logoutRequest));
|
|
46
|
+
}
|
|
47
|
+
logoutRedirect(logoutRequest) {
|
|
48
|
+
return from(this.instance.logoutRedirect(logoutRequest));
|
|
49
|
+
}
|
|
50
|
+
logoutPopup(logoutRequest) {
|
|
51
|
+
return from(this.instance.logoutPopup(logoutRequest));
|
|
52
|
+
}
|
|
53
|
+
ssoSilent(request) {
|
|
54
|
+
return from(this.instance.ssoSilent(request));
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Gets logger for msal-angular.
|
|
58
|
+
* If no logger set, returns logger instance created with same options as msal-browser
|
|
59
|
+
*/
|
|
60
|
+
getLogger() {
|
|
61
|
+
if (!this.logger) {
|
|
62
|
+
this.logger = this.instance.getLogger().clone(this.name, this.version);
|
|
63
|
+
}
|
|
64
|
+
return this.logger;
|
|
65
|
+
}
|
|
66
|
+
// Create a logger instance for msal-angular with the same options as msal-browser
|
|
67
|
+
setLogger(logger) {
|
|
68
|
+
this.logger = logger.clone(this.name, this.version);
|
|
69
|
+
this.instance.setLogger(logger);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
MsalServiceb2c.ɵfac = function MsalServiceb2c_Factory(t) { return new (t || MsalServiceb2c)(i0.ɵɵinject(MSAL_INSTANCE), i0.ɵɵinject(i1.Location)); };
|
|
73
|
+
MsalServiceb2c.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MsalServiceb2c, factory: MsalServiceb2c.ɵfac });
|
|
74
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MsalServiceb2c, [{
|
|
75
|
+
type: Injectable
|
|
76
|
+
}], function () { return [{ type: undefined, decorators: [{
|
|
77
|
+
type: Inject,
|
|
78
|
+
args: [MSAL_INSTANCE]
|
|
79
|
+
}] }, { type: i1.Location }]; }, null); })();
|
|
80
80
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1tc2FsU2VydmljZWIyYy5zZXJ2aWNlLi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2F1dGgvc3JjL2xpYi9zaGFyZWQvYXV0aC1tc2FsU2VydmljZWIyYy5zZXJ2aWNlLi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBVUgsVUFBVSxFQUNiLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBYyxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUl4QyxNQUFNLE9BQU8sY0FBYztJQUt2QixZQUNrQyxRQUFrQyxFQUN4RCxRQUFrQjtRQURJLGFBQVEsR0FBUixRQUFRLENBQTBCO1FBQ3hELGFBQVEsR0FBUixRQUFRLENBQVU7UUFKdEIsU0FBSSxHQUFHLHFCQUFxQixDQUFDO1FBQzdCLFlBQU8sR0FBRyxjQUFjLENBQUM7UUFLN0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3ZELElBQUksSUFBSSxFQUFFO1lBQ04sSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1NBQ2xDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsVUFBVTtRQUNOLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsT0FBcUI7UUFDbkMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFDRCxvQkFBb0IsQ0FBQyxPQUF3QjtRQUN6QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUNELGtCQUFrQixDQUFDLGFBQTRCO1FBQzNDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBQ0Qsd0JBQXdCLENBQUMsSUFBYTtRQUNsQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBQ0QsVUFBVSxDQUFDLE9BQXNCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUNELGFBQWEsQ0FBQyxPQUF5QjtRQUNuQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFDRCxNQUFNLENBQUMsYUFBaUM7UUFDcEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBQ0QsY0FBYyxDQUFDLGFBQWlDO1FBQzVDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUNELFdBQVcsQ0FBQyxhQUFzQztRQUM5QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFDRCxTQUFTLENBQUMsT0FBeUI7UUFDL0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBQ0Q7OztPQUdHO0lBQ0gsU0FBUztRQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUMxRTtRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBQ0Qsa0ZBQWtGO0lBQ2xGLFNBQVMsQ0FBQyxNQUFjO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDOzs0RUFoRVEsY0FBYyxjQU1YLGFBQWE7b0VBTmhCLGNBQWMsV0FBZCxjQUFjO3VGQUFkLGNBQWM7Y0FEMUIsVUFBVTs7c0JBT0YsTUFBTTt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBJUHVibGljQ2xpZW50QXBwbGljYXRpb24sXG4gICAgRW5kU2Vzc2lvblJlcXVlc3QsXG4gICAgRW5kU2Vzc2lvblBvcHVwUmVxdWVzdCxcbiAgICBBdXRoZW50aWNhdGlvblJlc3VsdCxcbiAgICBSZWRpcmVjdFJlcXVlc3QsXG4gICAgU2lsZW50UmVxdWVzdCxcbiAgICBQb3B1cFJlcXVlc3QsXG4gICAgU3NvU2lsZW50UmVxdWVzdCxcbiAgICBMb2dnZXIsXG4gICAgV3JhcHBlclNLVVxufSBmcm9tICdAYXp1cmUvbXNhbC1icm93c2VyJztcbmltcG9ydCB7IE1TQUxfSU5TVEFOQ0UgfSBmcm9tICdAYXp1cmUvbXNhbC1hbmd1bGFyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElNc2FsU2VydmljZSB9IGZyb20gJ0BhenVyZS9tc2FsLWFuZ3VsYXInO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTXNhbFNlcnZpY2ViMmMgaW1wbGVtZW50cyBJTXNhbFNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVkaXJlY3RIYXNoOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlcjtcbiAgICBwcml2YXRlIG5hbWUgPSAnQGF6dXJlL21zYWwtYW5ndWxhcic7XG4gICAgcHJpdmF0ZSB2ZXJzaW9uID0gJzIuMC4wLWJldGEuMic7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoTVNBTF9JTlNUQU5DRSkgcHVibGljIGluc3RhbmNlOiBJUHVibGljQ2xpZW50QXBwbGljYXRpb24sXG4gICAgICAgIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGhhc2ggPSB0aGlzLmxvY2F0aW9uLnBhdGgodHJ1ZSkuc3BsaXQoJyMnKS5wb3AoKTtcbiAgICAgICAgaWYgKGhhc2gpIHtcbiAgICAgICAgICAgIHRoaXMucmVkaXJlY3RIYXNoID0gYCMke2hhc2h9YDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluc3RhbmNlLmluaXRpYWxpemVXcmFwcGVyTGlicmFyeShXcmFwcGVyU0tVLkFuZ3VsYXIsIHRoaXMudmVyc2lvbik7XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZSgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIGZyb20odGhpcy5pbnN0YW5jZS5pbml0aWFsaXplKCkpO1xuICAgIH1cblxuICAgIGFjcXVpcmVUb2tlblBvcHVwKHJlcXVlc3Q6IFBvcHVwUmVxdWVzdCk6IE9ic2VydmFibGU8QXV0aGVudGljYXRpb25SZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIGZyb20odGhpcy5pbnN0YW5jZS5hY3F1aXJlVG9rZW5Qb3B1cChyZXF1ZXN0KSk7XG4gICAgfVxuICAgIGFjcXVpcmVUb2tlblJlZGlyZWN0KHJlcXVlc3Q6IFJlZGlyZWN0UmVxdWVzdCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gZnJvbSh0aGlzLmluc3RhbmNlLmFjcXVpcmVUb2tlblJlZGlyZWN0KHJlcXVlc3QpKTtcbiAgICB9XG4gICAgYWNxdWlyZVRva2VuU2lsZW50KHNpbGVudFJlcXVlc3Q6IFNpbGVudFJlcXVlc3QpOiBPYnNlcnZhYmxlPEF1dGhlbnRpY2F0aW9uUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiBmcm9tKHRoaXMuaW5zdGFuY2UuYWNxdWlyZVRva2VuU2lsZW50KHNpbGVudFJlcXVlc3QpKTtcbiAgICB9XG4gICAgaGFuZGxlUmVkaXJlY3RPYnNlcnZhYmxlKGhhc2g/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEF1dGhlbnRpY2F0aW9uUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiBmcm9tKHRoaXMuaW5zdGFuY2UuaGFuZGxlUmVkaXJlY3RQcm9taXNlKGhhc2ggfHwgdGhpcy5yZWRpcmVjdEhhc2gpKTtcbiAgICB9XG4gICAgbG9naW5Qb3B1cChyZXF1ZXN0PzogUG9wdXBSZXF1ZXN0KTogT2JzZXJ2YWJsZTxBdXRoZW50aWNhdGlvblJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gZnJvbSh0aGlzLmluc3RhbmNlLmxvZ2luUG9wdXAocmVxdWVzdCkpO1xuICAgIH1cbiAgICBsb2dpblJlZGlyZWN0KHJlcXVlc3Q/OiBSZWRpcmVjdFJlcXVlc3QpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIGZyb20odGhpcy5pbnN0YW5jZS5sb2dpblJlZGlyZWN0KHJlcXVlc3QpKTtcbiAgICB9XG4gICAgbG9nb3V0KGxvZ291dFJlcXVlc3Q/OiBFbmRTZXNzaW9uUmVxdWVzdCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gZnJvbSh0aGlzLmluc3RhbmNlLmxvZ291dChsb2dvdXRSZXF1ZXN0KSk7XG4gICAgfVxuICAgIGxvZ291dFJlZGlyZWN0KGxvZ291dFJlcXVlc3Q/OiBFbmRTZXNzaW9uUmVxdWVzdCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gZnJvbSh0aGlzLmluc3RhbmNlLmxvZ291dFJlZGlyZWN0KGxvZ291dFJlcXVlc3QpKTtcbiAgICB9XG4gICAgbG9nb3V0UG9wdXAobG9nb3V0UmVxdWVzdD86IEVuZFNlc3Npb25Qb3B1cFJlcXVlc3QpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIGZyb20odGhpcy5pbnN0YW5jZS5sb2dvdXRQb3B1cChsb2dvdXRSZXF1ZXN0KSk7XG4gICAgfVxuICAgIHNzb1NpbGVudChyZXF1ZXN0OiBTc29TaWxlbnRSZXF1ZXN0KTogT2JzZXJ2YWJsZTxBdXRoZW50aWNhdGlvblJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gZnJvbSh0aGlzLmluc3RhbmNlLnNzb1NpbGVudChyZXF1ZXN0KSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldHMgbG9nZ2VyIGZvciBtc2FsLWFuZ3VsYXIuXG4gICAgICogSWYgbm8gbG9nZ2VyIHNldCwgcmV0dXJucyBsb2dnZXIgaW5zdGFuY2UgY3JlYXRlZCB3aXRoIHNhbWUgb3B0aW9ucyBhcyBtc2FsLWJyb3dzZXJcbiAgICAgKi9cbiAgICBnZXRMb2dnZXIoKTogTG9nZ2VyIHtcbiAgICAgICAgaWYgKCF0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIgPSB0aGlzLmluc3RhbmNlLmdldExvZ2dlcigpLmNsb25lKHRoaXMubmFtZSwgdGhpcy52ZXJzaW9uKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5sb2dnZXI7XG4gICAgfVxuICAgIC8vIENyZWF0ZSBhIGxvZ2dlciBpbnN0YW5jZSBmb3IgbXNhbC1hbmd1bGFyIHdpdGggdGhlIHNhbWUgb3B0aW9ucyBhcyBtc2FsLWJyb3dzZXJcbiAgICBzZXRMb2dnZXIobG9nZ2VyOiBMb2dnZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sb2dnZXIgPSBsb2dnZXIuY2xvbmUodGhpcy5uYW1lLCB0aGlzLnZlcnNpb24pO1xuICAgICAgICB0aGlzLmluc3RhbmNlLnNldExvZ2dlcihsb2dnZXIpO1xuICAgIH1cblxufVxuIl19
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "./auth.service";
|
|
4
|
-
import * as i2 from "@igo2/core";
|
|
5
|
-
import * as i3 from "@angular/router";
|
|
6
|
-
export class AuthGuard {
|
|
7
|
-
constructor(authService, config, router) {
|
|
8
|
-
this.authService = authService;
|
|
9
|
-
this.config = config;
|
|
10
|
-
this.router = router;
|
|
11
|
-
}
|
|
12
|
-
canActivate(route, state) {
|
|
13
|
-
if (this.authService.authenticated) {
|
|
14
|
-
return true;
|
|
15
|
-
}
|
|
16
|
-
this.authService.redirectUrl = state.url;
|
|
17
|
-
const authConfig = this.config.getConfig('auth');
|
|
18
|
-
if (authConfig && authConfig.loginRoute) {
|
|
19
|
-
this.router.navigateByUrl(authConfig.loginRoute);
|
|
20
|
-
}
|
|
21
|
-
return false;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
AuthGuard.ɵfac = function AuthGuard_Factory(t) { return new (t || AuthGuard)(i0.ɵɵinject(i1.AuthService), i0.ɵɵinject(i2.ConfigService), i0.ɵɵinject(i3.Router)); };
|
|
25
|
-
AuthGuard.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: AuthGuard, factory: AuthGuard.ɵfac, providedIn: 'root' });
|
|
26
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AuthGuard, [{
|
|
27
|
-
type: Injectable,
|
|
28
|
-
args: [{
|
|
29
|
-
providedIn: 'root'
|
|
30
|
-
}]
|
|
31
|
-
}], function () { return [{ type: i1.AuthService }, { type: i2.ConfigService }, { type: i3.Router }]; }, null); })();
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "./auth.service";
|
|
4
|
+
import * as i2 from "@igo2/core";
|
|
5
|
+
import * as i3 from "@angular/router";
|
|
6
|
+
export class AuthGuard {
|
|
7
|
+
constructor(authService, config, router) {
|
|
8
|
+
this.authService = authService;
|
|
9
|
+
this.config = config;
|
|
10
|
+
this.router = router;
|
|
11
|
+
}
|
|
12
|
+
canActivate(route, state) {
|
|
13
|
+
if (this.authService.authenticated) {
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
this.authService.redirectUrl = state.url;
|
|
17
|
+
const authConfig = this.config.getConfig('auth');
|
|
18
|
+
if (authConfig && authConfig.loginRoute) {
|
|
19
|
+
this.router.navigateByUrl(authConfig.loginRoute);
|
|
20
|
+
}
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
AuthGuard.ɵfac = function AuthGuard_Factory(t) { return new (t || AuthGuard)(i0.ɵɵinject(i1.AuthService), i0.ɵɵinject(i2.ConfigService), i0.ɵɵinject(i3.Router)); };
|
|
25
|
+
AuthGuard.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: AuthGuard, factory: AuthGuard.ɵfac, providedIn: 'root' });
|
|
26
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AuthGuard, [{
|
|
27
|
+
type: Injectable,
|
|
28
|
+
args: [{
|
|
29
|
+
providedIn: 'root'
|
|
30
|
+
}]
|
|
31
|
+
}], function () { return [{ type: i1.AuthService }, { type: i2.ConfigService }, { type: i3.Router }]; }, null); })();
|
|
32
32
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2F1dGgvc3JjL2xpYi9zaGFyZWQvYXV0aC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQWMzQyxNQUFNLE9BQU8sU0FBUztJQUNwQixZQUNVLFdBQXdCLEVBQ3hCLE1BQXFCLEVBQ3JCLE1BQWM7UUFGZCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7SUFDckIsQ0FBQztJQUVKLFdBQVcsQ0FBQyxLQUE2QixFQUFFLEtBQTBCO1FBQ25FLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUU7WUFDbEMsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFFekMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakQsSUFBSSxVQUFVLElBQUksVUFBVSxDQUFDLFVBQVUsRUFBRTtZQUN2QyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDbEQ7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7O2tFQXBCVSxTQUFTOytEQUFULFNBQVMsV0FBVCxTQUFTLG1CQUZSLE1BQU07dUZBRVAsU0FBUztjQUhyQixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDYW5BY3RpdmF0ZSxcbiAgUm91dGVyLFxuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBSb3V0ZXJTdGF0ZVNuYXBzaG90XG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBdXRoR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlnOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcbiAgKSB7fVxuXG4gIGNhbkFjdGl2YXRlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCkge1xuICAgIGlmICh0aGlzLmF1dGhTZXJ2aWNlLmF1dGhlbnRpY2F0ZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMuYXV0aFNlcnZpY2UucmVkaXJlY3RVcmwgPSBzdGF0ZS51cmw7XG5cbiAgICBjb25zdCBhdXRoQ29uZmlnID0gdGhpcy5jb25maWcuZ2V0Q29uZmlnKCdhdXRoJyk7XG4gICAgaWYgKGF1dGhDb25maWcgJiYgYXV0aENvbmZpZy5sb2dpblJvdXRlKSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGF1dGhDb25maWcubG9naW5Sb3V0ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=
|
|
@@ -1,155 +1,155 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { Md5 } from 'ts-md5';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@igo2/core";
|
|
5
|
-
import * as i2 from "./token.service";
|
|
6
|
-
import * as i3 from "@angular/common/http";
|
|
7
|
-
export class AuthInterceptor {
|
|
8
|
-
constructor(config, tokenService, http) {
|
|
9
|
-
this.config = config;
|
|
10
|
-
this.tokenService = tokenService;
|
|
11
|
-
this.http = http;
|
|
12
|
-
this.refreshInProgress = false;
|
|
13
|
-
}
|
|
14
|
-
get trustHosts() {
|
|
15
|
-
const trustHosts = this.config.getConfig('auth.trustHosts') || [];
|
|
16
|
-
trustHosts.push(window.location.hostname);
|
|
17
|
-
return trustHosts;
|
|
18
|
-
}
|
|
19
|
-
get hostsWithCredentials() {
|
|
20
|
-
return this.config.getConfig('auth.hostsWithCredentials') || [];
|
|
21
|
-
}
|
|
22
|
-
get hostsWithAuthByKey() {
|
|
23
|
-
return this.config.getConfig('auth.hostsByKey') || [];
|
|
24
|
-
}
|
|
25
|
-
intercept(originalReq, next) {
|
|
26
|
-
const withCredentials = this.handleHostsWithCredentials(originalReq.url);
|
|
27
|
-
let req = originalReq.clone();
|
|
28
|
-
const hostWithKey = this.handleHostsAuthByKey(originalReq.url);
|
|
29
|
-
if (hostWithKey) {
|
|
30
|
-
req = req.clone({
|
|
31
|
-
params: req.params.set(hostWithKey.key, hostWithKey.value)
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
if (withCredentials) {
|
|
35
|
-
req = originalReq.clone({
|
|
36
|
-
withCredentials
|
|
37
|
-
});
|
|
38
|
-
return next.handle(req);
|
|
39
|
-
}
|
|
40
|
-
this.refreshToken();
|
|
41
|
-
const token = this.tokenService.get();
|
|
42
|
-
const element = document.createElement('a');
|
|
43
|
-
element.href = req.url;
|
|
44
|
-
if (element.host === '') {
|
|
45
|
-
element.href = element.href; // FIX IE11, DO NOT REMOVE
|
|
46
|
-
}
|
|
47
|
-
if (!token || this.trustHosts.indexOf(element.hostname) === -1) {
|
|
48
|
-
return next.handle(req);
|
|
49
|
-
}
|
|
50
|
-
const authHeader = `Bearer ${token}`;
|
|
51
|
-
let authReq = req.clone({
|
|
52
|
-
headers: req.headers.set('Authorization', authHeader)
|
|
53
|
-
});
|
|
54
|
-
const tokenDecoded = this.tokenService.decode();
|
|
55
|
-
if (authReq.params.get('_i') === 'true' &&
|
|
56
|
-
tokenDecoded &&
|
|
57
|
-
tokenDecoded.user &&
|
|
58
|
-
tokenDecoded.user.sourceId) {
|
|
59
|
-
const hashUser = Md5.hashStr(tokenDecoded.user.sourceId);
|
|
60
|
-
authReq = authReq.clone({
|
|
61
|
-
params: authReq.params.set('_i', hashUser)
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
else if (authReq.params.get('_i') === 'true') {
|
|
65
|
-
authReq = authReq.clone({
|
|
66
|
-
params: authReq.params.delete('_i')
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
return next.handle(authReq);
|
|
70
|
-
}
|
|
71
|
-
interceptXhr(xhr, url) {
|
|
72
|
-
const withCredentials = this.handleHostsWithCredentials(url);
|
|
73
|
-
if (withCredentials) {
|
|
74
|
-
xhr.withCredentials = withCredentials;
|
|
75
|
-
return true;
|
|
76
|
-
}
|
|
77
|
-
this.refreshToken();
|
|
78
|
-
const element = document.createElement('a');
|
|
79
|
-
element.href = url;
|
|
80
|
-
const token = this.tokenService.get();
|
|
81
|
-
if (!token || this.trustHosts.indexOf(element.hostname) === -1) {
|
|
82
|
-
return false;
|
|
83
|
-
}
|
|
84
|
-
xhr.setRequestHeader('Authorization', 'Bearer ' + token);
|
|
85
|
-
return true;
|
|
86
|
-
}
|
|
87
|
-
alterUrlWithKeyAuth(url) {
|
|
88
|
-
const hostWithKey = this.handleHostsAuthByKey(url);
|
|
89
|
-
let interceptedUrl = url;
|
|
90
|
-
if (hostWithKey) {
|
|
91
|
-
const urlDecomposed = interceptedUrl.split(/[?&]/);
|
|
92
|
-
let urlWithKeyAdded = urlDecomposed.shift();
|
|
93
|
-
const paramsToKeep = urlDecomposed.filter(p => p.length !== 0);
|
|
94
|
-
paramsToKeep.push(`${hostWithKey.key}=${hostWithKey.value}`);
|
|
95
|
-
if (paramsToKeep.length) {
|
|
96
|
-
urlWithKeyAdded += '?' + paramsToKeep.join('&');
|
|
97
|
-
}
|
|
98
|
-
return urlWithKeyAdded;
|
|
99
|
-
}
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
handleHostsWithCredentials(reqUrl) {
|
|
103
|
-
let withCredentials = false;
|
|
104
|
-
for (const hostWithCredentials of this.hostsWithCredentials) {
|
|
105
|
-
const domainRegex = new RegExp(hostWithCredentials.domainRegFilters);
|
|
106
|
-
if (domainRegex.test(reqUrl)) {
|
|
107
|
-
withCredentials = hostWithCredentials.withCredentials !== undefined ? hostWithCredentials.withCredentials : undefined;
|
|
108
|
-
break;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
return withCredentials;
|
|
112
|
-
}
|
|
113
|
-
handleHostsAuthByKey(reqUrl) {
|
|
114
|
-
let hostWithKey;
|
|
115
|
-
for (const hostWithAuthByKey of this.hostsWithAuthByKey) {
|
|
116
|
-
const domainRegex = new RegExp(hostWithAuthByKey.domainRegFilters);
|
|
117
|
-
if (domainRegex.test(reqUrl)) {
|
|
118
|
-
var replace = `${hostWithAuthByKey.keyProperty}=${hostWithAuthByKey.keyValue}`;
|
|
119
|
-
var keyAdded = new RegExp(replace, "gm");
|
|
120
|
-
if (!keyAdded.test(reqUrl)) {
|
|
121
|
-
hostWithKey = { key: hostWithAuthByKey.keyProperty, value: hostWithAuthByKey.keyValue };
|
|
122
|
-
break;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
return hostWithKey;
|
|
127
|
-
}
|
|
128
|
-
refreshToken() {
|
|
129
|
-
const jwt = this.tokenService.decode();
|
|
130
|
-
const currentTime = new Date().getTime() / 1000;
|
|
131
|
-
if (!this.refreshInProgress &&
|
|
132
|
-
jwt &&
|
|
133
|
-
currentTime < jwt.exp &&
|
|
134
|
-
currentTime > jwt.exp - 1800) {
|
|
135
|
-
this.refreshInProgress = true;
|
|
136
|
-
const url = this.config.getConfig('auth.url');
|
|
137
|
-
return this.http.post(`${url}/refresh`, {}).subscribe((data) => {
|
|
138
|
-
this.tokenService.set(data.token);
|
|
139
|
-
this.refreshInProgress = false;
|
|
140
|
-
}, err => {
|
|
141
|
-
err.error.caught = true;
|
|
142
|
-
return err;
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
AuthInterceptor.ɵfac = function AuthInterceptor_Factory(t) { return new (t || AuthInterceptor)(i0.ɵɵinject(i1.ConfigService), i0.ɵɵinject(i2.TokenService), i0.ɵɵinject(i3.HttpClient)); };
|
|
148
|
-
AuthInterceptor.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: AuthInterceptor, factory: AuthInterceptor.ɵfac, providedIn: 'root' });
|
|
149
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AuthInterceptor, [{
|
|
150
|
-
type: Injectable,
|
|
151
|
-
args: [{
|
|
152
|
-
providedIn: 'root'
|
|
153
|
-
}]
|
|
154
|
-
}], function () { return [{ type: i1.ConfigService }, { type: i2.TokenService }, { type: i3.HttpClient }]; }, null); })();
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Md5 } from 'ts-md5';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@igo2/core";
|
|
5
|
+
import * as i2 from "./token.service";
|
|
6
|
+
import * as i3 from "@angular/common/http";
|
|
7
|
+
export class AuthInterceptor {
|
|
8
|
+
constructor(config, tokenService, http) {
|
|
9
|
+
this.config = config;
|
|
10
|
+
this.tokenService = tokenService;
|
|
11
|
+
this.http = http;
|
|
12
|
+
this.refreshInProgress = false;
|
|
13
|
+
}
|
|
14
|
+
get trustHosts() {
|
|
15
|
+
const trustHosts = this.config.getConfig('auth.trustHosts') || [];
|
|
16
|
+
trustHosts.push(window.location.hostname);
|
|
17
|
+
return trustHosts;
|
|
18
|
+
}
|
|
19
|
+
get hostsWithCredentials() {
|
|
20
|
+
return this.config.getConfig('auth.hostsWithCredentials') || [];
|
|
21
|
+
}
|
|
22
|
+
get hostsWithAuthByKey() {
|
|
23
|
+
return this.config.getConfig('auth.hostsByKey') || [];
|
|
24
|
+
}
|
|
25
|
+
intercept(originalReq, next) {
|
|
26
|
+
const withCredentials = this.handleHostsWithCredentials(originalReq.url);
|
|
27
|
+
let req = originalReq.clone();
|
|
28
|
+
const hostWithKey = this.handleHostsAuthByKey(originalReq.url);
|
|
29
|
+
if (hostWithKey) {
|
|
30
|
+
req = req.clone({
|
|
31
|
+
params: req.params.set(hostWithKey.key, hostWithKey.value)
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
if (withCredentials) {
|
|
35
|
+
req = originalReq.clone({
|
|
36
|
+
withCredentials
|
|
37
|
+
});
|
|
38
|
+
return next.handle(req);
|
|
39
|
+
}
|
|
40
|
+
this.refreshToken();
|
|
41
|
+
const token = this.tokenService.get();
|
|
42
|
+
const element = document.createElement('a');
|
|
43
|
+
element.href = req.url;
|
|
44
|
+
if (element.host === '') {
|
|
45
|
+
element.href = element.href; // FIX IE11, DO NOT REMOVE
|
|
46
|
+
}
|
|
47
|
+
if (!token || this.trustHosts.indexOf(element.hostname) === -1) {
|
|
48
|
+
return next.handle(req);
|
|
49
|
+
}
|
|
50
|
+
const authHeader = `Bearer ${token}`;
|
|
51
|
+
let authReq = req.clone({
|
|
52
|
+
headers: req.headers.set('Authorization', authHeader)
|
|
53
|
+
});
|
|
54
|
+
const tokenDecoded = this.tokenService.decode();
|
|
55
|
+
if (authReq.params.get('_i') === 'true' &&
|
|
56
|
+
tokenDecoded &&
|
|
57
|
+
tokenDecoded.user &&
|
|
58
|
+
tokenDecoded.user.sourceId) {
|
|
59
|
+
const hashUser = Md5.hashStr(tokenDecoded.user.sourceId);
|
|
60
|
+
authReq = authReq.clone({
|
|
61
|
+
params: authReq.params.set('_i', hashUser)
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
else if (authReq.params.get('_i') === 'true') {
|
|
65
|
+
authReq = authReq.clone({
|
|
66
|
+
params: authReq.params.delete('_i')
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
return next.handle(authReq);
|
|
70
|
+
}
|
|
71
|
+
interceptXhr(xhr, url) {
|
|
72
|
+
const withCredentials = this.handleHostsWithCredentials(url);
|
|
73
|
+
if (withCredentials) {
|
|
74
|
+
xhr.withCredentials = withCredentials;
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
this.refreshToken();
|
|
78
|
+
const element = document.createElement('a');
|
|
79
|
+
element.href = url;
|
|
80
|
+
const token = this.tokenService.get();
|
|
81
|
+
if (!token || this.trustHosts.indexOf(element.hostname) === -1) {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
xhr.setRequestHeader('Authorization', 'Bearer ' + token);
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
alterUrlWithKeyAuth(url) {
|
|
88
|
+
const hostWithKey = this.handleHostsAuthByKey(url);
|
|
89
|
+
let interceptedUrl = url;
|
|
90
|
+
if (hostWithKey) {
|
|
91
|
+
const urlDecomposed = interceptedUrl.split(/[?&]/);
|
|
92
|
+
let urlWithKeyAdded = urlDecomposed.shift();
|
|
93
|
+
const paramsToKeep = urlDecomposed.filter(p => p.length !== 0);
|
|
94
|
+
paramsToKeep.push(`${hostWithKey.key}=${hostWithKey.value}`);
|
|
95
|
+
if (paramsToKeep.length) {
|
|
96
|
+
urlWithKeyAdded += '?' + paramsToKeep.join('&');
|
|
97
|
+
}
|
|
98
|
+
return urlWithKeyAdded;
|
|
99
|
+
}
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
handleHostsWithCredentials(reqUrl) {
|
|
103
|
+
let withCredentials = false;
|
|
104
|
+
for (const hostWithCredentials of this.hostsWithCredentials) {
|
|
105
|
+
const domainRegex = new RegExp(hostWithCredentials.domainRegFilters);
|
|
106
|
+
if (domainRegex.test(reqUrl)) {
|
|
107
|
+
withCredentials = hostWithCredentials.withCredentials !== undefined ? hostWithCredentials.withCredentials : undefined;
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return withCredentials;
|
|
112
|
+
}
|
|
113
|
+
handleHostsAuthByKey(reqUrl) {
|
|
114
|
+
let hostWithKey;
|
|
115
|
+
for (const hostWithAuthByKey of this.hostsWithAuthByKey) {
|
|
116
|
+
const domainRegex = new RegExp(hostWithAuthByKey.domainRegFilters);
|
|
117
|
+
if (domainRegex.test(reqUrl)) {
|
|
118
|
+
var replace = `${hostWithAuthByKey.keyProperty}=${hostWithAuthByKey.keyValue}`;
|
|
119
|
+
var keyAdded = new RegExp(replace, "gm");
|
|
120
|
+
if (!keyAdded.test(reqUrl)) {
|
|
121
|
+
hostWithKey = { key: hostWithAuthByKey.keyProperty, value: hostWithAuthByKey.keyValue };
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return hostWithKey;
|
|
127
|
+
}
|
|
128
|
+
refreshToken() {
|
|
129
|
+
const jwt = this.tokenService.decode();
|
|
130
|
+
const currentTime = new Date().getTime() / 1000;
|
|
131
|
+
if (!this.refreshInProgress &&
|
|
132
|
+
jwt &&
|
|
133
|
+
currentTime < jwt.exp &&
|
|
134
|
+
currentTime > jwt.exp - 1800) {
|
|
135
|
+
this.refreshInProgress = true;
|
|
136
|
+
const url = this.config.getConfig('auth.url');
|
|
137
|
+
return this.http.post(`${url}/refresh`, {}).subscribe((data) => {
|
|
138
|
+
this.tokenService.set(data.token);
|
|
139
|
+
this.refreshInProgress = false;
|
|
140
|
+
}, err => {
|
|
141
|
+
err.error.caught = true;
|
|
142
|
+
return err;
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
AuthInterceptor.ɵfac = function AuthInterceptor_Factory(t) { return new (t || AuthInterceptor)(i0.ɵɵinject(i1.ConfigService), i0.ɵɵinject(i2.TokenService), i0.ɵɵinject(i3.HttpClient)); };
|
|
148
|
+
AuthInterceptor.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: AuthInterceptor, factory: AuthInterceptor.ɵfac, providedIn: 'root' });
|
|
149
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AuthInterceptor, [{
|
|
150
|
+
type: Injectable,
|
|
151
|
+
args: [{
|
|
152
|
+
providedIn: 'root'
|
|
153
|
+
}]
|
|
154
|
+
}], function () { return [{ type: i1.ConfigService }, { type: i2.TokenService }, { type: i3.HttpClient }]; }, null); })();
|
|
155
155
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2F1dGgvc3JjL2xpYi9zaGFyZWQvYXV0aC5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBUzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxRQUFRLENBQUM7Ozs7O0FBUzdCLE1BQU0sT0FBTyxlQUFlO0lBaUIxQixZQUNVLE1BQXFCLEVBQ3JCLFlBQTBCLEVBQzFCLElBQWdCO1FBRmhCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQW5CbEIsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO0lBb0IvQixDQUFDO0lBbEJKLElBQVksVUFBVTtRQUNwQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsRSxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUMsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQVksb0JBQW9CO1FBQzlCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsMkJBQTJCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEUsQ0FBQztJQUVELElBQVksa0JBQWtCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEQsQ0FBQztJQVFELFNBQVMsQ0FDUCxXQUE2QixFQUM3QixJQUFpQjtRQUVqQixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FB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dGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1xuICBIdHRwRXZlbnQsXG4gIEh0dHBJbnRlcmNlcHRvcixcbiAgSHR0cEhhbmRsZXIsXG4gIEh0dHBSZXF1ZXN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1kNSB9IGZyb20gJ3RzLW1kNSc7XG5cbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlJztcbmltcG9ydCB7IFRva2VuU2VydmljZSB9IGZyb20gJy4vdG9rZW4uc2VydmljZSc7XG5pbXBvcnQgeyBBdXRoQnlLZXlPcHRpb25zLCBXaXRoQ3JlZGVudGlhbHNPcHRpb25zIH0gZnJvbSAnLi9hdXRoLmludGVyZmFjZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG4gIHByaXZhdGUgcmVmcmVzaEluUHJvZ3Jlc3MgPSBmYWxzZTtcblxuICBwcml2YXRlIGdldCB0cnVzdEhvc3RzKCkge1xuICAgIGNvbnN0IHRydXN0SG9zdHMgPSB0aGlzLmNvbmZpZy5nZXRDb25maWcoJ2F1dGgudHJ1c3RIb3N0cycpIHx8IFtdO1xuICAgIHRydXN0SG9zdHMucHVzaCh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUpO1xuICAgIHJldHVybiB0cnVzdEhvc3RzO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaG9zdHNXaXRoQ3JlZGVudGlhbHMoKTogV2l0aENyZWRlbnRpYWxzT3B0aW9uc1tdIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuZ2V0Q29uZmlnKCdhdXRoLmhvc3RzV2l0aENyZWRlbnRpYWxzJykgfHwgW107XG4gIH1cblxuICBwcml2YXRlIGdldCBob3N0c1dpdGhBdXRoQnlLZXkoKTogQXV0aEJ5S2V5T3B0aW9uc1tdIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuZ2V0Q29uZmlnKCdhdXRoLmhvc3RzQnlLZXknKSB8fCBbXTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29uZmlnOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9rZW5TZXJ2aWNlOiBUb2tlblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50XG4gICkge31cblxuICBpbnRlcmNlcHQoXG4gICAgb3JpZ2luYWxSZXE6IEh0dHBSZXF1ZXN0PGFueT4sXG4gICAgbmV4dDogSHR0cEhhbmRsZXJcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIGNvbnN0IHdpdGhDcmVkZW50aWFscyA9IHRoaXMuaGFuZGxlSG9zdHNXaXRoQ3JlZGVudGlhbHMob3JpZ2luYWxSZXEudXJsKTtcbiAgICBsZXQgcmVxID0gb3JpZ2luYWxSZXEuY2xvbmUoKTtcbiAgICBjb25zdCBob3N0V2l0aEtleSA9IHRoaXMuaGFuZGxlSG9zdHNBdXRoQnlLZXkob3JpZ2luYWxSZXEudXJsKTtcbiAgICBpZiAoaG9zdFdpdGhLZXkpIHtcbiAgICAgIHJlcSA9IHJlcS5jbG9uZSh7XG4gICAgICAgIHBhcmFtczogcmVxLnBhcmFtcy5zZXQoaG9zdFdpdGhLZXkua2V5LCBob3N0V2l0aEtleS52YWx1ZSlcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAod2l0aENyZWRlbnRpYWxzKSB7XG4gICAgICByZXEgPSBvcmlnaW5hbFJlcS5jbG9uZSh7XG4gICAgICAgIHdpdGhDcmVkZW50aWFsc1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKTtcbiAgICB9XG4gICAgdGhpcy5yZWZyZXNoVG9rZW4oKTtcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMudG9rZW5TZXJ2aWNlLmdldCgpO1xuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgZWxlbWVudC5ocmVmID0gcmVxLnVybDtcbiAgICBpZiAoZWxlbWVudC5ob3N0ID09PSAnJykge1xuICAgICAgZWxlbWVudC5ocmVmID0gZWxlbWVudC5ocmVmOyAvLyBGSVggSUUxMSwgRE8gTk9UIFJFTU9WRVxuICAgIH1cblxuICAgIGlmICghdG9rZW4gfHwgdGhpcy50cnVzdEhvc3RzLmluZGV4T2YoZWxlbWVudC5ob3N0bmFtZSkgPT09IC0xKSB7XG4gICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKTtcbiAgICB9XG5cbiAgICBjb25zdCBhdXRoSGVhZGVyID0gYEJlYXJlciAke3Rva2VufWA7XG4gICAgbGV0IGF1dGhSZXEgPSByZXEuY2xvbmUoe1xuICAgICAgaGVhZGVyczogcmVxLmhlYWRlcnMuc2V0KCdBdXRob3JpemF0aW9uJywgYXV0aEhlYWRlcilcbiAgICB9KTtcblxuICAgIGNvbnN0IHRva2VuRGVjb2RlZDogYW55ID0gdGhpcy50b2tlblNlcnZpY2UuZGVjb2RlKCk7XG4gICAgaWYgKFxuICAgICAgYXV0aFJlcS5wYXJhbXMuZ2V0KCdfaScpID09PSAndHJ1ZScgJiZcbiAgICAgIHRva2VuRGVjb2RlZCAmJlxuICAgICAgdG9rZW5EZWNvZGVkLnVzZXIgJiZcbiAgICAgIHRva2VuRGVjb2RlZC51c2VyLnNvdXJjZUlkXG4gICAgKSB7XG4gICAgICBjb25zdCBoYXNoVXNlciA9IE1kNS5oYXNoU3RyKHRva2VuRGVjb2RlZC51c2VyLnNvdXJjZUlkKSBhcyBzdHJpbmc7XG4gICAgICBhdXRoUmVxID0gYXV0aFJlcS5jbG9uZSh7XG4gICAgICAgIHBhcmFtczogYXV0aFJlcS5wYXJhbXMuc2V0KCdfaScsIGhhc2hVc2VyKVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChhdXRoUmVxLnBhcmFtcy5nZXQoJ19pJykgPT09ICd0cnVlJykge1xuICAgICAgYXV0aFJlcSA9IGF1dGhSZXEuY2xvbmUoe1xuICAgICAgICBwYXJhbXM6IGF1dGhSZXEucGFyYW1zLmRlbGV0ZSgnX2knKVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5leHQuaGFuZGxlKGF1dGhSZXEpO1xuICB9XG5cbiAgaW50ZXJjZXB0WGhyKHhociwgdXJsOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCB3aXRoQ3JlZGVudGlhbHMgPSB0aGlzLmhhbmRsZUhvc3RzV2l0aENyZWRlbnRpYWxzKHVybCk7XG4gICAgaWYgKHdpdGhDcmVkZW50aWFscykge1xuICAgICAgIHhoci53aXRoQ3JlZGVudGlhbHMgPSB3aXRoQ3JlZGVudGlhbHM7XG4gICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5yZWZyZXNoVG9rZW4oKTtcbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGVsZW1lbnQuaHJlZiA9IHVybDtcblxuICAgIGNvbnN0IHRva2VuID0gdGhpcy50b2tlblNlcnZpY2UuZ2V0KCk7XG4gICAgaWYgKCF0b2tlbiB8fCB0aGlzLnRydXN0SG9zdHMuaW5kZXhPZihlbGVtZW50Lmhvc3RuYW1lKSA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ0F1dGhvcml6YXRpb24nLCAnQmVhcmVyICcgKyB0b2tlbik7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBhbHRlclVybFdpdGhLZXlBdXRoKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBob3N0V2l0aEtleSA9IHRoaXMuaGFuZGxlSG9zdHNBdXRoQnlLZXkodXJsKTtcbiAgICBsZXQgaW50ZXJjZXB0ZWRVcmwgPSB1cmw7XG4gICAgaWYgKGhvc3RXaXRoS2V5KSB7XG4gICAgICBjb25zdCB1cmxEZWNvbXBvc2VkID0gaW50ZXJjZXB0ZWRVcmwuc3BsaXQoL1s/Jl0vKTtcbiAgICAgIGxldCB1cmxXaXRoS2V5QWRkZWQgPSB1cmxEZWNvbXBvc2VkLnNoaWZ0KCk7XG4gICAgICBjb25zdCBwYXJhbXNUb0tlZXAgPSB1cmxEZWNvbXBvc2VkLmZpbHRlcihwID0+IHAubGVuZ3RoICE9PSAwKTtcbiAgICAgIHBhcmFtc1RvS2VlcC5wdXNoKGAke2hvc3RXaXRoS2V5LmtleX09JHtob3N0V2l0aEtleS52YWx1ZX1gKTtcbiAgICAgIGlmIChwYXJhbXNUb0tlZXAubGVuZ3RoKSB7XG4gICAgICAgIHVybFdpdGhLZXlBZGRlZCArPSAnPycgKyBwYXJhbXNUb0tlZXAuam9pbignJicpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVybFdpdGhLZXlBZGRlZDtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVIb3N0c1dpdGhDcmVkZW50aWFscyhyZXFVcmw6IHN0cmluZykge1xuICAgIGxldCB3aXRoQ3JlZGVudGlhbHMgPSBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IGhvc3RXaXRoQ3JlZGVudGlhbHMgb2YgdGhpcy5ob3N0c1dpdGhDcmVkZW50aWFscykge1xuICAgICAgY29uc3QgZG9tYWluUmVnZXggPSBuZXcgUmVnRXhwKGhvc3RXaXRoQ3JlZGVudGlhbHMuZG9tYWluUmVnRmlsdGVycyk7XG4gICAgICBpZiAoZG9tYWluUmVnZXgudGVzdChyZXFVcmwpKSB7XG4gICAgICAgIHdpdGhDcmVkZW50aWFscyA9IGhvc3RXaXRoQ3JlZGVudGlhbHMud2l0aENyZWRlbnRpYWxzICE9PSB1bmRlZmluZWQgPyBob3N0V2l0aENyZWRlbnRpYWxzLndpdGhDcmVkZW50aWFscyA6IHVuZGVmaW5lZDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB3aXRoQ3JlZGVudGlhbHM7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUhvc3RzQXV0aEJ5S2V5KHJlcVVybDogc3RyaW5nKToge2tleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nfSB7XG4gICAgbGV0IGhvc3RXaXRoS2V5O1xuICAgIGZvciAoY29uc3QgaG9zdFdpdGhBdXRoQnlLZXkgb2YgdGhpcy5ob3N0c1dpdGhBdXRoQnlLZXkpIHtcbiAgICAgIGNvbnN0IGRvbWFpblJlZ2V4ID0gbmV3IFJlZ0V4cChob3N0V2l0aEF1dGhCeUtleS5kb21haW5SZWdGaWx0ZXJzKTtcbiAgICAgIGlmIChkb21haW5SZWdleC50ZXN0KHJlcVVybCkpIHtcbiAgICAgICAgdmFyIHJlcGxhY2UgPSBgJHtob3N0V2l0aEF1dGhCeUtleS5rZXlQcm9wZXJ0eX09JHtob3N0V2l0aEF1dGhCeUtleS5rZXlWYWx1ZX1gO1xuICAgICAgICB2YXIga2V5QWRkZWQgPSBuZXcgUmVnRXhwKHJlcGxhY2UsXCJnbVwiKTtcbiAgICAgICAgaWYgKCFrZXlBZGRlZC50ZXN0KHJlcVVybCkpIHtcbiAgICAgICAgICBob3N0V2l0aEtleSA9IHtrZXkgOiBob3N0V2l0aEF1dGhCeUtleS5rZXlQcm9wZXJ0eSwgdmFsdWU6IGhvc3RXaXRoQXV0aEJ5S2V5LmtleVZhbHVlfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaG9zdFdpdGhLZXk7XG4gIH1cblxuICByZWZyZXNoVG9rZW4oKSB7XG4gICAgY29uc3Qgand0ID0gdGhpcy50b2tlblNlcnZpY2UuZGVjb2RlKCk7XG4gICAgY29uc3QgY3VycmVudFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDA7XG5cbiAgICBpZiAoXG4gICAgICAhdGhpcy5yZWZyZXNoSW5Qcm9ncmVzcyAmJlxuICAgICAgand0ICYmXG4gICAgICBjdXJyZW50VGltZSA8IGp3dC5leHAgJiZcbiAgICAgIGN1cnJlbnRUaW1lID4gand0LmV4cCAtIDE4MDBcbiAgICApIHtcbiAgICAgIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MgPSB0cnVlO1xuXG4gICAgICBjb25zdCB1cmwgPSB0aGlzLmNvbmZpZy5nZXRDb25maWcoJ2F1dGgudXJsJyk7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dXJsfS9yZWZyZXNoYCwge30pLnN1YnNjcmliZShcbiAgICAgICAgKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMudG9rZW5TZXJ2aWNlLnNldChkYXRhLnRva2VuKTtcbiAgICAgICAgICB0aGlzLnJlZnJlc2hJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICAgIGVyciA9PiB7XG4gICAgICAgICAgZXJyLmVycm9yLmNhdWdodCA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuIGVycjtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export {};
|
|
2
2
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvc2hhcmVkL2F1dGguaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcm93c2VyQXV0aE9wdGlvbnMgfSBmcm9tICdAYXp1cmUvbXNhbC1icm93c2VyJztcbmltcG9ydCB7IE1zYWxHdWFyZENvbmZpZ3VyYXRpb24gfSBmcm9tICdAYXp1cmUvbXNhbC1hbmd1bGFyJztcblxuZXhwb3J0IGludGVyZmFjZSBBdXRoSW50ZXJuT3B0aW9ucyB7XG4gIGVuYWJsZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhGYWNlYm9va09wdGlvbnMge1xuICBlbmFibGVkPzogYm9vbGVhbjtcbiAgYXBwSWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRoR29vZ2xlT3B0aW9ucyB7XG4gIGVuYWJsZWQ/OiBib29sZWFuO1xuICBhcGlLZXk6IHN0cmluZztcbiAgY2xpZW50SWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRoTWljcm9zb2Z0T3B0aW9ucyB7XG4gIGVuYWJsZWQ/OiBib29sZWFuO1xuICBjbGllbnRJZDogc3RyaW5nO1xuICByZWRpcmVjdFVyaT86IHN0cmluZztcbiAgYXV0aG9yaXR5Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhNaWNyb3NvZnRiMmNPcHRpb25zIHtcbiAgZW5hYmxlZD86IGJvb2xlYW47XG4gIGJyb3dzZXJBdXRoT3B0aW9ucz86IEJyb3dzZXJBdXRoT3B0aW9ucztcbiAgb3B0aW9ucz86IEF1dGhNaWNyb3NvZnRiMmNPcHRpb25zT3B0aW9ucztcbiAgc2NvcGVzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aE1pY3Jvc29mdGIyY09wdGlvbnNPcHRpb25zIHtcbiAgbmFtZXM6IEF1dGhNaWNyb3NvZnRiMmNPcHRpb25zTmFtZXM7XG4gIGF1dGhvcml0aWVzOiBBdXRoTWljcm9zb2Z0YjJjT3B0aW9uc0F1dGhvcml0aWVzO1xuICBhdXRob3JpdHlEb21haW46IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhNaWNyb3NvZnRiMmNPcHRpb25zTmFtZXMge1xuICBzaWduVXBTaWduSW46IHN0cmluZztcbiAgZm9yZ290UGFzc3dvcmQ6IHN0cmluZztcbiAgZWRpdFByb2ZpbGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRoTWljcm9zb2Z0YjJjT3B0aW9uc0F1dGhvcml0aWVzIHtcbiAgc2lnblVwU2lnbkluOiBBdXRoTWljcm9zb2Z0YjJjT3B0aW9uc0F1dGhvcml0eTtcbiAgZm9yZ290UGFzc3dvcmQ6IEF1dGhNaWNyb3NvZnRiMmNPcHRpb25zQXV0aG9yaXR5O1xuICBlZGl0UHJvZmlsZTogQXV0aE1pY3Jvc29mdGIyY09wdGlvbnNBdXRob3JpdHk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aE1pY3Jvc29mdGIyY09wdGlvbnNBdXRob3JpdHkge1xuICBhdXRob3JpdHk6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRoT3B0aW9ucyB7XG4gIHVybD86IHN0cmluZztcbiAgdG9rZW5LZXk6IHN0cmluZztcbiAgYWxsb3dBbm9ueW1vdXM/OiBib29sZWFuO1xuICBsb2dpblJvdXRlPzogc3RyaW5nO1xuICBsb2dvdXRSb3V0ZT86IHN0cmluZztcbiAgaG9tZVJvdXRlPzogc3RyaW5nO1xuICBpbnRlcm4/OiBBdXRoSW50ZXJuT3B0aW9ucztcbiAgZmFjZWJvb2s/OiBBdXRoRmFjZWJvb2tPcHRpb25zO1xuICBnb29nbGU/OiBBdXRoR29vZ2xlT3B0aW9ucztcbiAgbWljcm9zb2Z0PzogQXV0aE1pY3Jvc29mdE9wdGlvbnM7XG4gIG1pY3Jvc29mdGIyYz86IEF1dGhNaWNyb3NvZnRiMmNPcHRpb25zO1xuICB0cnVzdEhvc3RzPzogc3RyaW5nW107XG4gIHByb2ZpbHNHdWFyZD86IHN0cmluZ1tdO1xuICBob3N0c1dpdGhDcmVkZW50aWFscz86IFdpdGhDcmVkZW50aWFsc09wdGlvbnNbXTtcbiAgaG9zdHNCeUtleT86IEF1dGhCeUtleU9wdGlvbnNbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aEJ5S2V5T3B0aW9ucyB7XG4gIGRvbWFpblJlZ0ZpbHRlcnM/OiBzdHJpbmc7XG4gIGtleVByb3BlcnR5Pzogc3RyaW5nO1xuICBrZXlWYWx1ZT86IHN0cmluZztcblxufVxuZXhwb3J0IGludGVyZmFjZSBXaXRoQ3JlZGVudGlhbHNPcHRpb25zIHtcbiAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgZG9tYWluUmVnRmlsdGVycz86IHN0cmluZztcbiB9XG5cbmV4cG9ydCBpbnRlcmZhY2UgTVNQTXNhbEd1YXJkQ29uZmlndXJhdGlvbiBleHRlbmRzIE1zYWxHdWFyZENvbmZpZ3VyYXRpb24ge1xuICB0eXBlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTVNQTXNhbEd1YXJkQ29uZmlndXJhdGlvbiBleHRlbmRzIE1zYWxHdWFyZENvbmZpZ3VyYXRpb24ge1xuICB0eXBlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTVNQTXNhbEd1YXJkQ29uZmlndXJhdGlvbiBleHRlbmRzIE1zYWxHdWFyZENvbmZpZ3VyYXRpb24ge1xuICB0eXBlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTVNQTXNhbEd1YXJkQ29uZmlndXJhdGlvbiBleHRlbmRzIE1zYWxHdWFyZENvbmZpZ3VyYXRpb24ge1xuICB0eXBlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTVNQTXNhbEd1YXJkQ29uZmlndXJhdGlvbiBleHRlbmRzIE1zYWxHdWFyZENvbmZpZ3VyYXRpb24ge1xuICB0eXBlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlciB7XG4gIHNvdXJjZT86IHN0cmluZztcbiAgc291cmNlSWQ/OiBzdHJpbmc7XG4gIGVtYWlsPzogc3RyaW5nO1xuICBmaXJzdE5hbWU/OiBzdHJpbmc7XG4gIGxhc3ROYW1lPzogc3RyaW5nO1xuICBsb2NhbGU/OiBzdHJpbmc7XG4gIGlzRXhwaXJlZD86IGJvb2xlYW47XG4gIGFkbWluPzogYm9vbGVhbjtcbiAgZGVmYXVsdENvbnRleHRJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJSW5mb3NVc2VyIHtcbiAgdG9rZW5JZDogc3RyaW5nO1xufVxuIl19
|