@dsivd/prestations-ng 15.2.3-beta4 → 15.2.3-beta5
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-beta5.tgz +0 -0
- package/esm2020/sdk-redirect/iam-expired-interceptor.service.mjs +23 -8
- package/fesm2015/dsivd-prestations-ng.mjs +20 -5
- package/fesm2015/dsivd-prestations-ng.mjs.map +1 -1
- package/fesm2020/dsivd-prestations-ng.mjs +20 -5
- package/fesm2020/dsivd-prestations-ng.mjs.map +1 -1
- package/package.json +1 -1
- package/dsivd-prestations-ng-v15.2.3-beta4.tgz +0 -0
|
Binary file
|
|
@@ -1,11 +1,26 @@
|
|
|
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 PORTAIL_IAM_ACV_EXTRA_PATH = 'portail.vd.ch:443/iamlogin';
|
|
10
|
+
const PORTAIL_IAM_ACV_INTRA_PATH = 'portail.etat-de-vaud.ch:443/iamlogin';
|
|
11
|
+
const isIamExpiredHeader = (event) => !!event.headers.get(IAM_SESSION_EXPIRED_HEADER);
|
|
12
|
+
const isRedirectionToIamACV = (event) => {
|
|
13
|
+
const isRedirection = event.status === 302 /* Found */;
|
|
14
|
+
const location = event.headers.get('Location');
|
|
15
|
+
return (isRedirection &&
|
|
16
|
+
(location?.includes(PORTAIL_IAM_ACV_EXTRA_PATH) ||
|
|
17
|
+
location?.includes(PORTAIL_IAM_ACV_INTRA_PATH)));
|
|
18
|
+
};
|
|
19
|
+
const isRedirectionToCyberLogin = (event) => {
|
|
20
|
+
const isRedirection = event.status === 302 /* Found */;
|
|
21
|
+
const location = event.headers.get('Location');
|
|
22
|
+
return isRedirection && location?.includes(CYBER_LOGIN_PATH);
|
|
23
|
+
};
|
|
9
24
|
export class IamExpiredInterceptorService {
|
|
10
25
|
constructor() {
|
|
11
26
|
this._iamExpirationHeaderPresence = new Subject();
|
|
@@ -16,9 +31,9 @@ export class IamExpiredInterceptorService {
|
|
|
16
31
|
intercept(req, next) {
|
|
17
32
|
return next.handle(req).pipe(map(event => {
|
|
18
33
|
if (event instanceof HttpResponse) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
34
|
+
if (isIamExpiredHeader(event) ||
|
|
35
|
+
isRedirectionToIamACV(event) ||
|
|
36
|
+
isRedirectionToCyberLogin(event)) {
|
|
22
37
|
this._iamExpirationHeaderPresence.next(true);
|
|
23
38
|
}
|
|
24
39
|
}
|
|
@@ -28,13 +43,13 @@ export class IamExpiredInterceptorService {
|
|
|
28
43
|
handleError(err) {
|
|
29
44
|
if (err instanceof HttpErrorResponse) {
|
|
30
45
|
if (err.status === 200) {
|
|
31
|
-
const isLogin = err.url.indexOf(
|
|
46
|
+
const isLogin = err.url.indexOf(CYBER_LOGIN_PATH) > 0;
|
|
32
47
|
if (isLogin) {
|
|
33
48
|
this._iamExpirationHeaderPresence.next(true);
|
|
34
49
|
}
|
|
35
50
|
}
|
|
36
51
|
}
|
|
37
|
-
return
|
|
52
|
+
return throwError(err);
|
|
38
53
|
}
|
|
39
54
|
}
|
|
40
55
|
IamExpiredInterceptorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.5", ngImport: i0, type: IamExpiredInterceptorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
@@ -45,4 +60,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.5", ngImpor
|
|
|
45
60
|
providedIn: 'root'
|
|
46
61
|
}]
|
|
47
62
|
}] });
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWFtLWV4cGlyZWQtaW50ZXJjZXB0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9zZGstcmVkaXJlY3QvaWFtLWV4cGlyZWQtaW50ZXJjZXB0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFjLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQ0gsaUJBQWlCLEVBS2pCLFlBQVksRUFFZixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRWpELE1BQU0sMEJBQTBCLEdBQUcscUJBQXFCLENBQUM7QUFDekQsTUFBTSxnQkFBZ0IsR0FBRyxlQUFlLENBQUM7QUFDekMsTUFBTSwwQkFBMEIsR0FBRyw0QkFBNEIsQ0FBQztBQUNoRSxNQUFNLDBCQUEwQixHQUFHLHNDQUFzQyxDQUFDO0FBRTFFLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxLQUF3QixFQUFXLEVBQUUsQ0FDN0QsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7QUFFcEQsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEtBQXdCLEVBQVcsRUFBRTtJQUNoRSxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsTUFBTSxvQkFBeUIsQ0FBQztJQUM1RCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMvQyxPQUFPLENBQ0gsYUFBYTtRQUNiLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQztZQUMzQyxRQUFRLEVBQUUsUUFBUSxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FDdEQsQ0FBQztBQUNOLENBQUMsQ0FBQztBQUVGLE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxLQUF3QixFQUFXLEVBQUU7SUFDcEUsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLE1BQU0sb0JBQXlCLENBQUM7SUFDNUQsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDL0MsT0FBTyxhQUFhLElBQUksUUFBUSxFQUFFLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ2pFLENBQUMsQ0FBQztBQUtGLE1BQU0sT0FBTyw0QkFBNEI7SUFIekM7UUFJWSxpQ0FBNEIsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQztLQTBDbkY7SUF4Q0csSUFBSSwyQkFBMkI7UUFDM0IsT0FBTyxJQUFJLENBQUMsNEJBQTRCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUQsQ0FBQztJQUVELFNBQVMsQ0FDTCxHQUFxQixFQUNyQixJQUFpQjtRQUVqQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUN4QixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDUixJQUFJLEtBQUssWUFBWSxZQUFZLEVBQUU7Z0JBQy9CLElBQ0ksa0JBQWtCLENBQUMsS0FBSyxDQUFDO29CQUN6QixxQkFBcUIsQ0FBQyxLQUFLLENBQUM7b0JBQzVCLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxFQUNsQztvQkFDRSxJQUFJLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNoRDthQUNKO1lBRUQsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQzFDLENBQUM7SUFDTixDQUFDO0lBRU8sV0FBVyxDQUNmLEdBQXVDO1FBRXZDLElBQUksR0FBRyxZQUFZLGlCQUFpQixFQUFFO1lBQ2xDLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7Z0JBQ3BCLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN0RCxJQUFJLE9BQU8sRUFBRTtvQkFDVCxJQUFJLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNoRDthQUNKO1NBQ0o7UUFFRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixDQUFDOzt5SEExQ1EsNEJBQTRCOzZIQUE1Qiw0QkFBNEIsY0FGekIsTUFBTTsyRkFFVCw0QkFBNEI7a0JBSHhDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBIdHRwRXJyb3JSZXNwb25zZSxcbiAgICBIdHRwRXZlbnQsXG4gICAgSHR0cEhhbmRsZXIsXG4gICAgSHR0cEludGVyY2VwdG9yLFxuICAgIEh0dHBSZXF1ZXN0LFxuICAgIEh0dHBSZXNwb25zZSxcbiAgICBIdHRwU3RhdHVzQ29kZVxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmNvbnN0IElBTV9TRVNTSU9OX0VYUElSRURfSEVBREVSID0gJ2lhbS1zZXNzaW9uLWV4cGlyZWQnO1xuY29uc3QgQ1lCRVJfTE9HSU5fUEFUSCA9ICcvMTAwMDE4L2xvZ2luJztcbmNvbnN0IFBPUlRBSUxfSUFNX0FDVl9FWFRSQV9QQVRIID0gJ3BvcnRhaWwudmQuY2g6NDQzL2lhbWxvZ2luJztcbmNvbnN0IFBPUlRBSUxfSUFNX0FDVl9JTlRSQV9QQVRIID0gJ3BvcnRhaWwuZXRhdC1kZS12YXVkLmNoOjQ0My9pYW1sb2dpbic7XG5cbmNvbnN0IGlzSWFtRXhwaXJlZEhlYWRlciA9IChldmVudDogSHR0cFJlc3BvbnNlPGFueT4pOiBib29sZWFuID0+XG4gICAgISFldmVudC5oZWFkZXJzLmdldChJQU1fU0VTU0lPTl9FWFBJUkVEX0hFQURFUik7XG5cbmNvbnN0IGlzUmVkaXJlY3Rpb25Ub0lhbUFDViA9IChldmVudDogSHR0cFJlc3BvbnNlPGFueT4pOiBib29sZWFuID0+IHtcbiAgICBjb25zdCBpc1JlZGlyZWN0aW9uID0gZXZlbnQuc3RhdHVzID09PSBIdHRwU3RhdHVzQ29kZS5Gb3VuZDtcbiAgICBjb25zdCBsb2NhdGlvbiA9IGV2ZW50LmhlYWRlcnMuZ2V0KCdMb2NhdGlvbicpO1xuICAgIHJldHVybiAoXG4gICAgICAgIGlzUmVkaXJlY3Rpb24gJiZcbiAgICAgICAgKGxvY2F0aW9uPy5pbmNsdWRlcyhQT1JUQUlMX0lBTV9BQ1ZfRVhUUkFfUEFUSCkgfHxcbiAgICAgICAgICAgIGxvY2F0aW9uPy5pbmNsdWRlcyhQT1JUQUlMX0lBTV9BQ1ZfSU5UUkFfUEFUSCkpXG4gICAgKTtcbn07XG5cbmNvbnN0IGlzUmVkaXJlY3Rpb25Ub0N5YmVyTG9naW4gPSAoZXZlbnQ6IEh0dHBSZXNwb25zZTxhbnk+KTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgaXNSZWRpcmVjdGlvbiA9IGV2ZW50LnN0YXR1cyA9PT0gSHR0cFN0YXR1c0NvZGUuRm91bmQ7XG4gICAgY29uc3QgbG9jYXRpb24gPSBldmVudC5oZWFkZXJzLmdldCgnTG9jYXRpb24nKTtcbiAgICByZXR1cm4gaXNSZWRpcmVjdGlvbiAmJiBsb2NhdGlvbj8uaW5jbHVkZXMoQ1lCRVJfTE9HSU5fUEFUSCk7XG59O1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIElhbUV4cGlyZWRJbnRlcmNlcHRvclNlcnZpY2UgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuICAgIHByaXZhdGUgX2lhbUV4cGlyYXRpb25IZWFkZXJQcmVzZW5jZTogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICBnZXQgaWFtRXhwaXJhdGlvbkhlYWRlclByZXNlbmNlKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faWFtRXhwaXJhdGlvbkhlYWRlclByZXNlbmNlLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIGludGVyY2VwdChcbiAgICAgICAgcmVxOiBIdHRwUmVxdWVzdDxhbnk+LFxuICAgICAgICBuZXh0OiBIdHRwSGFuZGxlclxuICAgICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4gfCBhbnk+IHtcbiAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSkucGlwZShcbiAgICAgICAgICAgIG1hcChldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzSWFtRXhwaXJlZEhlYWRlcihldmVudCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVkaXJlY3Rpb25Ub0lhbUFDVihldmVudCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVkaXJlY3Rpb25Ub0N5YmVyTG9naW4oZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faWFtRXhwaXJhdGlvbkhlYWRlclByZXNlbmNlLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZXZlbnQ7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvci5iaW5kKHRoaXMpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlRXJyb3IoXG4gICAgICAgIGVycjogSHR0cEVycm9yUmVzcG9uc2UgfCBIdHRwRXZlbnQ8YW55PlxuICAgICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgICBpZiAoZXJyLnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNMb2dpbiA9IGVyci51cmwuaW5kZXhPZihDWUJFUl9MT0dJTl9QQVRIKSA+IDA7XG4gICAgICAgICAgICAgICAgaWYgKGlzTG9naW4pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faWFtRXhwaXJhdGlvbkhlYWRlclByZXNlbmNlLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -31,7 +31,22 @@ 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 PORTAIL_IAM_ACV_EXTRA_PATH = 'portail.vd.ch:443/iamlogin';
|
|
36
|
+
const PORTAIL_IAM_ACV_INTRA_PATH = 'portail.etat-de-vaud.ch:443/iamlogin';
|
|
37
|
+
const isIamExpiredHeader = (event) => !!event.headers.get(IAM_SESSION_EXPIRED_HEADER);
|
|
38
|
+
const isRedirectionToIamACV = (event) => {
|
|
39
|
+
const isRedirection = event.status === 302 /* Found */;
|
|
40
|
+
const location = event.headers.get('Location');
|
|
41
|
+
return (isRedirection &&
|
|
42
|
+
((location === null || location === void 0 ? void 0 : location.includes(PORTAIL_IAM_ACV_EXTRA_PATH)) ||
|
|
43
|
+
(location === null || location === void 0 ? void 0 : location.includes(PORTAIL_IAM_ACV_INTRA_PATH))));
|
|
44
|
+
};
|
|
45
|
+
const isRedirectionToCyberLogin = (event) => {
|
|
46
|
+
const isRedirection = event.status === 302 /* Found */;
|
|
47
|
+
const location = event.headers.get('Location');
|
|
48
|
+
return isRedirection && (location === null || location === void 0 ? void 0 : location.includes(CYBER_LOGIN_PATH));
|
|
49
|
+
};
|
|
35
50
|
class IamExpiredInterceptorService {
|
|
36
51
|
constructor() {
|
|
37
52
|
this._iamExpirationHeaderPresence = new Subject();
|
|
@@ -42,9 +57,9 @@ class IamExpiredInterceptorService {
|
|
|
42
57
|
intercept(req, next) {
|
|
43
58
|
return next.handle(req).pipe(map(event => {
|
|
44
59
|
if (event instanceof HttpResponse) {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
60
|
+
if (isIamExpiredHeader(event) ||
|
|
61
|
+
isRedirectionToIamACV(event) ||
|
|
62
|
+
isRedirectionToCyberLogin(event)) {
|
|
48
63
|
this._iamExpirationHeaderPresence.next(true);
|
|
49
64
|
}
|
|
50
65
|
}
|
|
@@ -54,7 +69,7 @@ class IamExpiredInterceptorService {
|
|
|
54
69
|
handleError(err) {
|
|
55
70
|
if (err instanceof HttpErrorResponse) {
|
|
56
71
|
if (err.status === 200) {
|
|
57
|
-
const isLogin = err.url.indexOf(
|
|
72
|
+
const isLogin = err.url.indexOf(CYBER_LOGIN_PATH) > 0;
|
|
58
73
|
if (isLogin) {
|
|
59
74
|
this._iamExpirationHeaderPresence.next(true);
|
|
60
75
|
}
|