@dsivd/prestations-ng 15.2.3-beta4 → 15.2.3-beta7
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/dsivd-prestations-ng-v15.2.3-beta7.tgz +0 -0
- package/esm2020/sdk-redirect/iam-expired-interceptor.service.mjs +28 -14
- package/esm2020/sdk-redirect/redirect.component.mjs +2 -2
- package/fesm2015/dsivd-prestations-ng.mjs +26 -12
- package/fesm2015/dsivd-prestations-ng.mjs.map +1 -1
- package/fesm2020/dsivd-prestations-ng.mjs +26 -12
- package/fesm2020/dsivd-prestations-ng.mjs.map +1 -1
- package/package.json +1 -1
- package/sdk-redirect/iam-expired-interceptor.service.d.ts +2 -2
- package/dsivd-prestations-ng-v15.2.3-beta4.tgz +0 -0
|
Binary file
|
|
@@ -1,40 +1,54 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import { Subject, throwError
|
|
2
|
+
import { Subject, throwError } from 'rxjs';
|
|
3
3
|
import { Injectable } from '@angular/core';
|
|
4
4
|
import { HttpErrorResponse, HttpResponse } from '@angular/common/http';
|
|
5
5
|
import { catchError, map } from 'rxjs/operators';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
const IAM_SESSION_EXPIRED_HEADER = 'iam-session-expired';
|
|
8
|
-
const
|
|
8
|
+
const CYBER_LOGIN_PATH = '/100018/login';
|
|
9
|
+
const ACV_LOGIN_PATH = '/iamlogin';
|
|
10
|
+
const isIamExpiredHeader = (event) => !!event.headers.get(IAM_SESSION_EXPIRED_HEADER);
|
|
11
|
+
const isRedirectionToIamACV = (event) => {
|
|
12
|
+
const isRedirection = event.status === 302 /* Found */;
|
|
13
|
+
const location = event.headers.get('Location');
|
|
14
|
+
return isRedirection && location?.includes(ACV_LOGIN_PATH);
|
|
15
|
+
};
|
|
16
|
+
const isRedirectionToCyberLogin = (event) => {
|
|
17
|
+
const isRedirection = event.status === 302 /* Found */;
|
|
18
|
+
const location = event.headers.get('Location');
|
|
19
|
+
return isRedirection && location?.includes(CYBER_LOGIN_PATH);
|
|
20
|
+
};
|
|
9
21
|
export class IamExpiredInterceptorService {
|
|
10
22
|
constructor() {
|
|
11
|
-
this.
|
|
23
|
+
this._isIamSessionExpired = new Subject();
|
|
12
24
|
}
|
|
13
|
-
get
|
|
14
|
-
return this.
|
|
25
|
+
get isIamSessionExpired() {
|
|
26
|
+
return this._isIamSessionExpired.asObservable();
|
|
15
27
|
}
|
|
16
28
|
intercept(req, next) {
|
|
17
29
|
return next.handle(req).pipe(map(event => {
|
|
30
|
+
console.log('event', typeof event, event);
|
|
18
31
|
if (event instanceof HttpResponse) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
this.
|
|
32
|
+
if (isIamExpiredHeader(event) ||
|
|
33
|
+
isRedirectionToIamACV(event) ||
|
|
34
|
+
isRedirectionToCyberLogin(event)) {
|
|
35
|
+
this._isIamSessionExpired.next(true);
|
|
23
36
|
}
|
|
24
37
|
}
|
|
25
38
|
return event;
|
|
26
39
|
}), catchError(this.handleError.bind(this)));
|
|
27
40
|
}
|
|
28
41
|
handleError(err) {
|
|
42
|
+
console.log('err', typeof err, err);
|
|
29
43
|
if (err instanceof HttpErrorResponse) {
|
|
30
|
-
if (err.status === 200) {
|
|
31
|
-
const isLogin = err.url.indexOf(
|
|
44
|
+
if (err.status === 200 /* Ok */) {
|
|
45
|
+
const isLogin = err.url.indexOf(CYBER_LOGIN_PATH) > 0;
|
|
32
46
|
if (isLogin) {
|
|
33
|
-
this.
|
|
47
|
+
this._isIamSessionExpired.next(true);
|
|
34
48
|
}
|
|
35
49
|
}
|
|
36
50
|
}
|
|
37
|
-
return
|
|
51
|
+
return throwError(err);
|
|
38
52
|
}
|
|
39
53
|
}
|
|
40
54
|
IamExpiredInterceptorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.5", ngImport: i0, type: IamExpiredInterceptorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
@@ -45,4 +59,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.5", ngImpor
|
|
|
45
59
|
providedIn: 'root'
|
|
46
60
|
}]
|
|
47
61
|
}] });
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWFtLWV4cGlyZWQtaW50ZXJjZXB0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9zZGstcmVkaXJlY3QvaWFtLWV4cGlyZWQtaW50ZXJjZXB0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFjLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQ0gsaUJBQWlCLEVBS2pCLFlBQVksRUFFZixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRWpELE1BQU0sMEJBQTBCLEdBQUcscUJBQXFCLENBQUM7QUFDekQsTUFBTSxnQkFBZ0IsR0FBRyxlQUFlLENBQUM7QUFDekMsTUFBTSxjQUFjLEdBQUcsV0FBVyxDQUFDO0FBRW5DLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxLQUF3QixFQUFXLEVBQUUsQ0FDN0QsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7QUFFcEQsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEtBQXdCLEVBQVcsRUFBRTtJQUNoRSxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsTUFBTSxvQkFBeUIsQ0FBQztJQUM1RCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMvQyxPQUFPLGFBQWEsSUFBSSxRQUFRLEVBQUUsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQy9ELENBQUMsQ0FBQztBQUVGLE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxLQUF3QixFQUFXLEVBQUU7SUFDcEUsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLE1BQU0sb0JBQXlCLENBQUM7SUFDNUQsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDL0MsT0FBTyxhQUFhLElBQUksUUFBUSxFQUFFLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ2pFLENBQUMsQ0FBQztBQUtGLE1BQU0sT0FBTyw0QkFBNEI7SUFIekM7UUFJWSx5QkFBb0IsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQztLQTRDM0U7SUExQ0csSUFBSSxtQkFBbUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUVELFNBQVMsQ0FDTCxHQUFxQixFQUNyQixJQUFpQjtRQUVqQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUN4QixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDUixPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMxQyxJQUFJLEtBQUssWUFBWSxZQUFZLEVBQUU7Z0JBQy9CLElBQ0ksa0JBQWtCLENBQUMsS0FBSyxDQUFDO29CQUN6QixxQkFBcUIsQ0FBQyxLQUFLLENBQUM7b0JBQzVCLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxFQUNsQztvQkFDRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUN4QzthQUNKO1lBRUQsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQzFDLENBQUM7SUFDTixDQUFDO0lBRU8sV0FBVyxDQUNmLEdBQXVDO1FBRXZDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLElBQUksR0FBRyxZQUFZLGlCQUFpQixFQUFFO1lBQ2xDLElBQUksR0FBRyxDQUFDLE1BQU0saUJBQXNCLEVBQUU7Z0JBQ2xDLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN0RCxJQUFJLE9BQU8sRUFBRTtvQkFDVCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUN4QzthQUNKO1NBQ0o7UUFFRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixDQUFDOzt5SEE1Q1EsNEJBQTRCOzZIQUE1Qiw0QkFBNEIsY0FGekIsTUFBTTsyRkFFVCw0QkFBNEI7a0JBSHhDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBIdHRwRXJyb3JSZXNwb25zZSxcbiAgICBIdHRwRXZlbnQsXG4gICAgSHR0cEhhbmRsZXIsXG4gICAgSHR0cEludGVyY2VwdG9yLFxuICAgIEh0dHBSZXF1ZXN0LFxuICAgIEh0dHBSZXNwb25zZSxcbiAgICBIdHRwU3RhdHVzQ29kZVxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmNvbnN0IElBTV9TRVNTSU9OX0VYUElSRURfSEVBREVSID0gJ2lhbS1zZXNzaW9uLWV4cGlyZWQnO1xuY29uc3QgQ1lCRVJfTE9HSU5fUEFUSCA9ICcvMTAwMDE4L2xvZ2luJztcbmNvbnN0IEFDVl9MT0dJTl9QQVRIID0gJy9pYW1sb2dpbic7XG5cbmNvbnN0IGlzSWFtRXhwaXJlZEhlYWRlciA9IChldmVudDogSHR0cFJlc3BvbnNlPGFueT4pOiBib29sZWFuID0+XG4gICAgISFldmVudC5oZWFkZXJzLmdldChJQU1fU0VTU0lPTl9FWFBJUkVEX0hFQURFUik7XG5cbmNvbnN0IGlzUmVkaXJlY3Rpb25Ub0lhbUFDViA9IChldmVudDogSHR0cFJlc3BvbnNlPGFueT4pOiBib29sZWFuID0+IHtcbiAgICBjb25zdCBpc1JlZGlyZWN0aW9uID0gZXZlbnQuc3RhdHVzID09PSBIdHRwU3RhdHVzQ29kZS5Gb3VuZDtcbiAgICBjb25zdCBsb2NhdGlvbiA9IGV2ZW50LmhlYWRlcnMuZ2V0KCdMb2NhdGlvbicpO1xuICAgIHJldHVybiBpc1JlZGlyZWN0aW9uICYmIGxvY2F0aW9uPy5pbmNsdWRlcyhBQ1ZfTE9HSU5fUEFUSCk7XG59O1xuXG5jb25zdCBpc1JlZGlyZWN0aW9uVG9DeWJlckxvZ2luID0gKGV2ZW50OiBIdHRwUmVzcG9uc2U8YW55Pik6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IGlzUmVkaXJlY3Rpb24gPSBldmVudC5zdGF0dXMgPT09IEh0dHBTdGF0dXNDb2RlLkZvdW5kO1xuICAgIGNvbnN0IGxvY2F0aW9uID0gZXZlbnQuaGVhZGVycy5nZXQoJ0xvY2F0aW9uJyk7XG4gICAgcmV0dXJuIGlzUmVkaXJlY3Rpb24gJiYgbG9jYXRpb24/LmluY2x1ZGVzKENZQkVSX0xPR0lOX1BBVEgpO1xufTtcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBJYW1FeHBpcmVkSW50ZXJjZXB0b3JTZXJ2aWNlIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcbiAgICBwcml2YXRlIF9pc0lhbVNlc3Npb25FeHBpcmVkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgIGdldCBpc0lhbVNlc3Npb25FeHBpcmVkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNJYW1TZXNzaW9uRXhwaXJlZC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBpbnRlcmNlcHQoXG4gICAgICAgIHJlcTogSHR0cFJlcXVlc3Q8YW55PixcbiAgICAgICAgbmV4dDogSHR0cEhhbmRsZXJcbiAgICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+IHwgYW55PiB7XG4gICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpLnBpcGUoXG4gICAgICAgICAgICBtYXAoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdldmVudCcsIHR5cGVvZiBldmVudCwgZXZlbnQpO1xuICAgICAgICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0lhbUV4cGlyZWRIZWFkZXIoZXZlbnQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBpc1JlZGlyZWN0aW9uVG9JYW1BQ1YoZXZlbnQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBpc1JlZGlyZWN0aW9uVG9DeWJlckxvZ2luKGV2ZW50KVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2lzSWFtU2Vzc2lvbkV4cGlyZWQubmV4dCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBldmVudDtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yLmJpbmQodGhpcykpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVFcnJvcihcbiAgICAgICAgZXJyOiBIdHRwRXJyb3JSZXNwb25zZSB8IEh0dHBFdmVudDxhbnk+XG4gICAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgICAgICBjb25zb2xlLmxvZygnZXJyJywgdHlwZW9mIGVyciwgZXJyKTtcbiAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgICBpZiAoZXJyLnN0YXR1cyA9PT0gSHR0cFN0YXR1c0NvZGUuT2spIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0xvZ2luID0gZXJyLnVybC5pbmRleE9mKENZQkVSX0xPR0lOX1BBVEgpID4gMDtcbiAgICAgICAgICAgICAgICBpZiAoaXNMb2dpbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9pc0lhbVNlc3Npb25FeHBpcmVkLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -9,7 +9,7 @@ export class RedirectComponent {
|
|
|
9
9
|
this.modalHeaderText = 'Information';
|
|
10
10
|
this.modalBodyText = `<p>Votre session a expiré.</p>
|
|
11
11
|
<p>Vous pouvez vous connecter à nouveau pour continuer à utiliser nos services.</p>`;
|
|
12
|
-
this.iamInterceptor.
|
|
12
|
+
this.iamInterceptor.isIamSessionExpired
|
|
13
13
|
.pipe(first())
|
|
14
14
|
.subscribe(() => this.showModal());
|
|
15
15
|
}
|
|
@@ -31,4 +31,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.5", ngImpor
|
|
|
31
31
|
type: Component,
|
|
32
32
|
args: [{ selector: 'redirector', template: "<foehn-modal\n [modalBodyText]=\"modalBodyText\"\n [isModalVisible]=\"isModalVisible\"\n [modalHeaderText]=\"modalHeaderText\"\n [closeable]=\"false\"\n>\n <div modal-footer class=\"w-100 text-right font-weight-bold\">\n Vous allez \u00EAtre redirig\u00E9 dans {{ counter }} s.\n </div>\n</foehn-modal>\n" }]
|
|
33
33
|
}], ctorParameters: function () { return [{ type: i1.IamExpiredInterceptorService }]; } });
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkaXJlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL3Nkay1yZWRpcmVjdC9yZWRpcmVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvc2RrLXJlZGlyZWN0L3JlZGlyZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBT3ZDLE1BQU0sT0FBTyxpQkFBaUI7SUFRMUIsWUFBb0IsY0FBNEM7UUFBNUMsbUJBQWMsR0FBZCxjQUFjLENBQThCO1FBUHZELG9CQUFlLEdBQUcsYUFBYSxDQUFDO1FBQ2hDLGtCQUFhLEdBQUc7Z0dBQ21FLENBQUM7UUFNekYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUI7YUFDbEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ2IsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFTyxTQUFTO1FBQ2IsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsV0FBVyxDQUFDLEdBQUcsRUFBRTtZQUNiLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ3BCLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3pCLE9BQU87YUFDVjtZQUNELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNuQixDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDYixDQUFDOzs4R0F4QlEsaUJBQWlCO2tHQUFqQixpQkFBaUIsa0RDVDlCLDJVQVVBOzJGRERhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFFSSxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJYW1FeHBpcmVkSW50ZXJjZXB0b3JTZXJ2aWNlIH0gZnJvbSAnLi9pYW0tZXhwaXJlZC1pbnRlcmNlcHRvci5zZXJ2aWNlJztcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ3JlZGlyZWN0b3InLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9yZWRpcmVjdC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUmVkaXJlY3RDb21wb25lbnQge1xuICAgIHJlYWRvbmx5IG1vZGFsSGVhZGVyVGV4dCA9ICdJbmZvcm1hdGlvbic7XG4gICAgcmVhZG9ubHkgbW9kYWxCb2R5VGV4dCA9IGA8cD5Wb3RyZSBzZXNzaW9uIGEgZXhwaXLDqS48L3A+XG4gICAgICAgICAgICA8cD5Wb3VzIHBvdXZleiB2b3VzIGNvbm5lY3RlciDDoCBub3V2ZWF1IHBvdXIgY29udGludWVyIMOgIHV0aWxpc2VyIG5vcyBzZXJ2aWNlcy48L3A+YDtcblxuICAgIGlzTW9kYWxWaXNpYmxlOiBib29sZWFuO1xuICAgIGNvdW50ZXI6IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaWFtSW50ZXJjZXB0b3I6IElhbUV4cGlyZWRJbnRlcmNlcHRvclNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5pYW1JbnRlcmNlcHRvci5pc0lhbVNlc3Npb25FeHBpcmVkXG4gICAgICAgICAgICAucGlwZShmaXJzdCgpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnNob3dNb2RhbCgpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3dNb2RhbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb3VudGVyID0gMTA7XG4gICAgICAgIHRoaXMuaXNNb2RhbFZpc2libGUgPSB0cnVlO1xuICAgICAgICBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoMCA9PT0gdGhpcy5jb3VudGVyKSB7XG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY291bnRlci0tO1xuICAgICAgICB9LCAxMDAwKTtcbiAgICB9XG59XG4iLCI8Zm9laG4tbW9kYWxcbiAgICBbbW9kYWxCb2R5VGV4dF09XCJtb2RhbEJvZHlUZXh0XCJcbiAgICBbaXNNb2RhbFZpc2libGVdPVwiaXNNb2RhbFZpc2libGVcIlxuICAgIFttb2RhbEhlYWRlclRleHRdPVwibW9kYWxIZWFkZXJUZXh0XCJcbiAgICBbY2xvc2VhYmxlXT1cImZhbHNlXCJcbj5cbiAgICA8ZGl2IG1vZGFsLWZvb3RlciBjbGFzcz1cInctMTAwIHRleHQtcmlnaHQgZm9udC13ZWlnaHQtYm9sZFwiPlxuICAgICAgICBWb3VzIGFsbGV6IMOqdHJlIHJlZGlyaWfDqSBkYW5zIHt7IGNvdW50ZXIgfX0gcy5cbiAgICA8L2Rpdj5cbjwvZm9laG4tbW9kYWw+XG4iXX0=
|
|
@@ -31,32 +31,46 @@ import weekOfYear from 'dayjs/plugin/weekOfYear';
|
|
|
31
31
|
|
|
32
32
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
33
33
|
const IAM_SESSION_EXPIRED_HEADER = 'iam-session-expired';
|
|
34
|
-
const
|
|
34
|
+
const CYBER_LOGIN_PATH = '/100018/login';
|
|
35
|
+
const ACV_LOGIN_PATH = '/iamlogin';
|
|
36
|
+
const isIamExpiredHeader = (event) => !!event.headers.get(IAM_SESSION_EXPIRED_HEADER);
|
|
37
|
+
const isRedirectionToIamACV = (event) => {
|
|
38
|
+
const isRedirection = event.status === 302 /* Found */;
|
|
39
|
+
const location = event.headers.get('Location');
|
|
40
|
+
return isRedirection && (location === null || location === void 0 ? void 0 : location.includes(ACV_LOGIN_PATH));
|
|
41
|
+
};
|
|
42
|
+
const isRedirectionToCyberLogin = (event) => {
|
|
43
|
+
const isRedirection = event.status === 302 /* Found */;
|
|
44
|
+
const location = event.headers.get('Location');
|
|
45
|
+
return isRedirection && (location === null || location === void 0 ? void 0 : location.includes(CYBER_LOGIN_PATH));
|
|
46
|
+
};
|
|
35
47
|
class IamExpiredInterceptorService {
|
|
36
48
|
constructor() {
|
|
37
|
-
this.
|
|
49
|
+
this._isIamSessionExpired = new Subject();
|
|
38
50
|
}
|
|
39
|
-
get
|
|
40
|
-
return this.
|
|
51
|
+
get isIamSessionExpired() {
|
|
52
|
+
return this._isIamSessionExpired.asObservable();
|
|
41
53
|
}
|
|
42
54
|
intercept(req, next) {
|
|
43
55
|
return next.handle(req).pipe(map(event => {
|
|
56
|
+
console.log('event', typeof event, event);
|
|
44
57
|
if (event instanceof HttpResponse) {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
this.
|
|
58
|
+
if (isIamExpiredHeader(event) ||
|
|
59
|
+
isRedirectionToIamACV(event) ||
|
|
60
|
+
isRedirectionToCyberLogin(event)) {
|
|
61
|
+
this._isIamSessionExpired.next(true);
|
|
49
62
|
}
|
|
50
63
|
}
|
|
51
64
|
return event;
|
|
52
65
|
}), catchError(this.handleError.bind(this)));
|
|
53
66
|
}
|
|
54
67
|
handleError(err) {
|
|
68
|
+
console.log('err', typeof err, err);
|
|
55
69
|
if (err instanceof HttpErrorResponse) {
|
|
56
|
-
if (err.status === 200) {
|
|
57
|
-
const isLogin = err.url.indexOf(
|
|
70
|
+
if (err.status === 200 /* Ok */) {
|
|
71
|
+
const isLogin = err.url.indexOf(CYBER_LOGIN_PATH) > 0;
|
|
58
72
|
if (isLogin) {
|
|
59
|
-
this.
|
|
73
|
+
this._isIamSessionExpired.next(true);
|
|
60
74
|
}
|
|
61
75
|
}
|
|
62
76
|
}
|
|
@@ -9935,7 +9949,7 @@ class RedirectComponent {
|
|
|
9935
9949
|
this.modalHeaderText = 'Information';
|
|
9936
9950
|
this.modalBodyText = `<p>Votre session a expiré.</p>
|
|
9937
9951
|
<p>Vous pouvez vous connecter à nouveau pour continuer à utiliser nos services.</p>`;
|
|
9938
|
-
this.iamInterceptor.
|
|
9952
|
+
this.iamInterceptor.isIamSessionExpired
|
|
9939
9953
|
.pipe(first())
|
|
9940
9954
|
.subscribe(() => this.showModal());
|
|
9941
9955
|
}
|