@dsivd/prestations-ng 15.2.3-beta6 → 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 +11 -13
- package/esm2020/sdk-redirect/redirect.component.mjs +2 -2
- package/fesm2015/dsivd-prestations-ng.mjs +11 -13
- package/fesm2015/dsivd-prestations-ng.mjs.map +1 -1
- package/fesm2020/dsivd-prestations-ng.mjs +11 -13
- 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-beta6.tgz +0 -0
|
Binary file
|
|
@@ -6,15 +6,12 @@ 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
8
|
const CYBER_LOGIN_PATH = '/100018/login';
|
|
9
|
-
const
|
|
10
|
-
const PORTAIL_IAM_ACV_INTRA_PATH = 'portail.etat-de-vaud.ch:443/iamlogin';
|
|
9
|
+
const ACV_LOGIN_PATH = '/iamlogin';
|
|
11
10
|
const isIamExpiredHeader = (event) => !!event.headers.get(IAM_SESSION_EXPIRED_HEADER);
|
|
12
11
|
const isRedirectionToIamACV = (event) => {
|
|
13
12
|
const isRedirection = event.status === 302 /* Found */;
|
|
14
13
|
const location = event.headers.get('Location');
|
|
15
|
-
return
|
|
16
|
-
(location?.includes(PORTAIL_IAM_ACV_EXTRA_PATH) ||
|
|
17
|
-
location?.includes(PORTAIL_IAM_ACV_INTRA_PATH)));
|
|
14
|
+
return isRedirection && location?.includes(ACV_LOGIN_PATH);
|
|
18
15
|
};
|
|
19
16
|
const isRedirectionToCyberLogin = (event) => {
|
|
20
17
|
const isRedirection = event.status === 302 /* Found */;
|
|
@@ -23,30 +20,31 @@ const isRedirectionToCyberLogin = (event) => {
|
|
|
23
20
|
};
|
|
24
21
|
export class IamExpiredInterceptorService {
|
|
25
22
|
constructor() {
|
|
26
|
-
this.
|
|
23
|
+
this._isIamSessionExpired = new Subject();
|
|
27
24
|
}
|
|
28
|
-
get
|
|
29
|
-
return this.
|
|
25
|
+
get isIamSessionExpired() {
|
|
26
|
+
return this._isIamSessionExpired.asObservable();
|
|
30
27
|
}
|
|
31
28
|
intercept(req, next) {
|
|
32
29
|
return next.handle(req).pipe(map(event => {
|
|
33
|
-
console.log('event', event);
|
|
30
|
+
console.log('event', typeof event, event);
|
|
34
31
|
if (event instanceof HttpResponse) {
|
|
35
32
|
if (isIamExpiredHeader(event) ||
|
|
36
33
|
isRedirectionToIamACV(event) ||
|
|
37
34
|
isRedirectionToCyberLogin(event)) {
|
|
38
|
-
this.
|
|
35
|
+
this._isIamSessionExpired.next(true);
|
|
39
36
|
}
|
|
40
37
|
}
|
|
41
38
|
return event;
|
|
42
39
|
}), catchError(this.handleError.bind(this)));
|
|
43
40
|
}
|
|
44
41
|
handleError(err) {
|
|
42
|
+
console.log('err', typeof err, err);
|
|
45
43
|
if (err instanceof HttpErrorResponse) {
|
|
46
|
-
if (err.status === 200) {
|
|
44
|
+
if (err.status === 200 /* Ok */) {
|
|
47
45
|
const isLogin = err.url.indexOf(CYBER_LOGIN_PATH) > 0;
|
|
48
46
|
if (isLogin) {
|
|
49
|
-
this.
|
|
47
|
+
this._isIamSessionExpired.next(true);
|
|
50
48
|
}
|
|
51
49
|
}
|
|
52
50
|
}
|
|
@@ -61,4 +59,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.5", ngImpor
|
|
|
61
59
|
providedIn: 'root'
|
|
62
60
|
}]
|
|
63
61
|
}] });
|
|
64
|
-
//# 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=
|
|
@@ -32,15 +32,12 @@ import weekOfYear from 'dayjs/plugin/weekOfYear';
|
|
|
32
32
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
33
33
|
const IAM_SESSION_EXPIRED_HEADER = 'iam-session-expired';
|
|
34
34
|
const CYBER_LOGIN_PATH = '/100018/login';
|
|
35
|
-
const
|
|
36
|
-
const PORTAIL_IAM_ACV_INTRA_PATH = 'portail.etat-de-vaud.ch:443/iamlogin';
|
|
35
|
+
const ACV_LOGIN_PATH = '/iamlogin';
|
|
37
36
|
const isIamExpiredHeader = (event) => !!event.headers.get(IAM_SESSION_EXPIRED_HEADER);
|
|
38
37
|
const isRedirectionToIamACV = (event) => {
|
|
39
38
|
const isRedirection = event.status === 302 /* Found */;
|
|
40
39
|
const location = event.headers.get('Location');
|
|
41
|
-
return
|
|
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))));
|
|
40
|
+
return isRedirection && (location === null || location === void 0 ? void 0 : location.includes(ACV_LOGIN_PATH));
|
|
44
41
|
};
|
|
45
42
|
const isRedirectionToCyberLogin = (event) => {
|
|
46
43
|
const isRedirection = event.status === 302 /* Found */;
|
|
@@ -49,30 +46,31 @@ const isRedirectionToCyberLogin = (event) => {
|
|
|
49
46
|
};
|
|
50
47
|
class IamExpiredInterceptorService {
|
|
51
48
|
constructor() {
|
|
52
|
-
this.
|
|
49
|
+
this._isIamSessionExpired = new Subject();
|
|
53
50
|
}
|
|
54
|
-
get
|
|
55
|
-
return this.
|
|
51
|
+
get isIamSessionExpired() {
|
|
52
|
+
return this._isIamSessionExpired.asObservable();
|
|
56
53
|
}
|
|
57
54
|
intercept(req, next) {
|
|
58
55
|
return next.handle(req).pipe(map(event => {
|
|
59
|
-
console.log('event', event);
|
|
56
|
+
console.log('event', typeof event, event);
|
|
60
57
|
if (event instanceof HttpResponse) {
|
|
61
58
|
if (isIamExpiredHeader(event) ||
|
|
62
59
|
isRedirectionToIamACV(event) ||
|
|
63
60
|
isRedirectionToCyberLogin(event)) {
|
|
64
|
-
this.
|
|
61
|
+
this._isIamSessionExpired.next(true);
|
|
65
62
|
}
|
|
66
63
|
}
|
|
67
64
|
return event;
|
|
68
65
|
}), catchError(this.handleError.bind(this)));
|
|
69
66
|
}
|
|
70
67
|
handleError(err) {
|
|
68
|
+
console.log('err', typeof err, err);
|
|
71
69
|
if (err instanceof HttpErrorResponse) {
|
|
72
|
-
if (err.status === 200) {
|
|
70
|
+
if (err.status === 200 /* Ok */) {
|
|
73
71
|
const isLogin = err.url.indexOf(CYBER_LOGIN_PATH) > 0;
|
|
74
72
|
if (isLogin) {
|
|
75
|
-
this.
|
|
73
|
+
this._isIamSessionExpired.next(true);
|
|
76
74
|
}
|
|
77
75
|
}
|
|
78
76
|
}
|
|
@@ -9951,7 +9949,7 @@ class RedirectComponent {
|
|
|
9951
9949
|
this.modalHeaderText = 'Information';
|
|
9952
9950
|
this.modalBodyText = `<p>Votre session a expiré.</p>
|
|
9953
9951
|
<p>Vous pouvez vous connecter à nouveau pour continuer à utiliser nos services.</p>`;
|
|
9954
|
-
this.iamInterceptor.
|
|
9952
|
+
this.iamInterceptor.isIamSessionExpired
|
|
9955
9953
|
.pipe(first())
|
|
9956
9954
|
.subscribe(() => this.showModal());
|
|
9957
9955
|
}
|