@dsivd/prestations-ng 15.2.3-beta5 → 15.2.3-beta8
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-beta8.tgz +0 -0
- package/esm2020/sdk-redirect/iam-expired-interceptor.service.mjs +19 -24
- package/esm2020/sdk-redirect/redirect.component.mjs +2 -2
- package/fesm2015/dsivd-prestations-ng.mjs +19 -24
- package/fesm2015/dsivd-prestations-ng.mjs.map +1 -1
- package/fesm2020/dsivd-prestations-ng.mjs +19 -24
- 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-beta5.tgz +0 -0
|
Binary file
|
|
@@ -6,35 +6,30 @@ 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
|
|
11
|
-
|
|
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)));
|
|
9
|
+
const ACV_LOGIN_PATH = '/iamlogin';
|
|
10
|
+
const isIamExpiredHeader = (event) => {
|
|
11
|
+
return !!event.headers.get(IAM_SESSION_EXPIRED_HEADER);
|
|
18
12
|
};
|
|
19
|
-
const
|
|
13
|
+
const isRedirectionToLogin = (event) => {
|
|
20
14
|
const isRedirection = event.status === 302 /* Found */;
|
|
21
|
-
const
|
|
22
|
-
|
|
15
|
+
const locationHeader = event.headers.get('Location');
|
|
16
|
+
const isLocationCyberLogin = locationHeader?.includes(CYBER_LOGIN_PATH);
|
|
17
|
+
const isLocationAcvLogin = locationHeader?.includes(ACV_LOGIN_PATH);
|
|
18
|
+
return isRedirection && (isLocationCyberLogin || isLocationAcvLogin);
|
|
23
19
|
};
|
|
24
20
|
export class IamExpiredInterceptorService {
|
|
25
21
|
constructor() {
|
|
26
|
-
this.
|
|
22
|
+
this._isIamSessionExpired = new Subject();
|
|
27
23
|
}
|
|
28
|
-
get
|
|
29
|
-
return this.
|
|
24
|
+
get isIamSessionExpired() {
|
|
25
|
+
return this._isIamSessionExpired.asObservable();
|
|
30
26
|
}
|
|
31
27
|
intercept(req, next) {
|
|
32
28
|
return next.handle(req).pipe(map(event => {
|
|
33
29
|
if (event instanceof HttpResponse) {
|
|
34
30
|
if (isIamExpiredHeader(event) ||
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
this._iamExpirationHeaderPresence.next(true);
|
|
31
|
+
isRedirectionToLogin(event)) {
|
|
32
|
+
this._isIamSessionExpired.next(true);
|
|
38
33
|
}
|
|
39
34
|
}
|
|
40
35
|
return event;
|
|
@@ -42,11 +37,11 @@ export class IamExpiredInterceptorService {
|
|
|
42
37
|
}
|
|
43
38
|
handleError(err) {
|
|
44
39
|
if (err instanceof HttpErrorResponse) {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
40
|
+
const isStatusOk = err.status === 200 /* Ok */;
|
|
41
|
+
const isUrlCyberLogin = err.url.includes(CYBER_LOGIN_PATH);
|
|
42
|
+
const isUrlAcvLogin = err.url.includes(ACV_LOGIN_PATH);
|
|
43
|
+
if (isStatusOk && (isUrlCyberLogin || isUrlAcvLogin)) {
|
|
44
|
+
this._isIamSessionExpired.next(true);
|
|
50
45
|
}
|
|
51
46
|
}
|
|
52
47
|
return throwError(err);
|
|
@@ -60,4 +55,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.5", ngImpor
|
|
|
60
55
|
providedIn: 'root'
|
|
61
56
|
}]
|
|
62
57
|
}] });
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWFtLWV4cGlyZWQtaW50ZXJjZXB0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9zZGstcmVkaXJlY3QvaWFtLWV4cGlyZWQtaW50ZXJjZXB0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFjLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQ0gsaUJBQWlCLEVBS2pCLFlBQVksRUFFZixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRWpELE1BQU0sMEJBQTBCLEdBQUcscUJBQXFCLENBQUM7QUFDekQsTUFBTSxnQkFBZ0IsR0FBRyxlQUFlLENBQUM7QUFDekMsTUFBTSxjQUFjLEdBQUcsV0FBVyxDQUFDO0FBRW5DLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxLQUF3QixFQUFXLEVBQUU7SUFDN0QsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsQ0FBQztBQUMzRCxDQUFDLENBQUM7QUFFRixNQUFNLG9CQUFvQixHQUFHLENBQUMsS0FBd0IsRUFBVyxFQUFFO0lBQy9ELE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxNQUFNLG9CQUF5QixDQUFDO0lBQzVELE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXJELE1BQU0sb0JBQW9CLEdBQUcsY0FBYyxFQUFFLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3hFLE1BQU0sa0JBQWtCLEdBQUcsY0FBYyxFQUFFLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUVwRSxPQUFPLGFBQWEsSUFBSSxDQUFDLG9CQUFvQixJQUFJLGtCQUFrQixDQUFDLENBQUM7QUFDekUsQ0FBQyxDQUFDO0FBS0YsTUFBTSxPQUFPLDRCQUE0QjtJQUh6QztRQUlZLHlCQUFvQixHQUFxQixJQUFJLE9BQU8sRUFBVyxDQUFDO0tBeUMzRTtJQXZDRyxJQUFJLG1CQUFtQjtRQUNuQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBRUQsU0FBUyxDQUNMLEdBQXFCLEVBQ3JCLElBQWlCO1FBRWpCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQ3hCLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNSLElBQUksS0FBSyxZQUFZLFlBQVksRUFBRTtnQkFDL0IsSUFDSSxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7b0JBQ3pCLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxFQUM3QjtvQkFDRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUN4QzthQUNKO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQzFDLENBQUM7SUFDTixDQUFDO0lBRU8sV0FBVyxDQUNmLEdBQXVDO1FBRXZDLElBQUksR0FBRyxZQUFZLGlCQUFpQixFQUFFO1lBQ2xDLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxNQUFNLGlCQUFzQixDQUFDO1lBQ3BELE1BQU0sZUFBZSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDM0QsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7WUFFdkQsSUFBSSxVQUFVLElBQUksQ0FBQyxlQUFlLElBQUksYUFBYSxDQUFDLEVBQUU7Z0JBQ2xELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDeEM7U0FDSjtRQUVELE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7O3lIQXpDUSw0QkFBNEI7NkhBQTVCLDRCQUE0QixjQUZ6QixNQUFNOzJGQUVULDRCQUE0QjtrQkFIeEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEh0dHBFcnJvclJlc3BvbnNlLFxuICAgIEh0dHBFdmVudCxcbiAgICBIdHRwSGFuZGxlcixcbiAgICBIdHRwSW50ZXJjZXB0b3IsXG4gICAgSHR0cFJlcXVlc3QsXG4gICAgSHR0cFJlc3BvbnNlLFxuICAgIEh0dHBTdGF0dXNDb2RlXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuY29uc3QgSUFNX1NFU1NJT05fRVhQSVJFRF9IRUFERVIgPSAnaWFtLXNlc3Npb24tZXhwaXJlZCc7XG5jb25zdCBDWUJFUl9MT0dJTl9QQVRIID0gJy8xMDAwMTgvbG9naW4nO1xuY29uc3QgQUNWX0xPR0lOX1BBVEggPSAnL2lhbWxvZ2luJztcblxuY29uc3QgaXNJYW1FeHBpcmVkSGVhZGVyID0gKGV2ZW50OiBIdHRwUmVzcG9uc2U8YW55Pik6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiAhIWV2ZW50LmhlYWRlcnMuZ2V0KElBTV9TRVNTSU9OX0VYUElSRURfSEVBREVSKTtcbn07XG5cbmNvbnN0IGlzUmVkaXJlY3Rpb25Ub0xvZ2luID0gKGV2ZW50OiBIdHRwUmVzcG9uc2U8YW55Pik6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IGlzUmVkaXJlY3Rpb24gPSBldmVudC5zdGF0dXMgPT09IEh0dHBTdGF0dXNDb2RlLkZvdW5kO1xuICAgIGNvbnN0IGxvY2F0aW9uSGVhZGVyID0gZXZlbnQuaGVhZGVycy5nZXQoJ0xvY2F0aW9uJyk7XG5cbiAgICBjb25zdCBpc0xvY2F0aW9uQ3liZXJMb2dpbiA9IGxvY2F0aW9uSGVhZGVyPy5pbmNsdWRlcyhDWUJFUl9MT0dJTl9QQVRIKTtcbiAgICBjb25zdCBpc0xvY2F0aW9uQWN2TG9naW4gPSBsb2NhdGlvbkhlYWRlcj8uaW5jbHVkZXMoQUNWX0xPR0lOX1BBVEgpO1xuXG4gICAgcmV0dXJuIGlzUmVkaXJlY3Rpb24gJiYgKGlzTG9jYXRpb25DeWJlckxvZ2luIHx8IGlzTG9jYXRpb25BY3ZMb2dpbik7XG59O1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIElhbUV4cGlyZWRJbnRlcmNlcHRvclNlcnZpY2UgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuICAgIHByaXZhdGUgX2lzSWFtU2Vzc2lvbkV4cGlyZWQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgZ2V0IGlzSWFtU2Vzc2lvbkV4cGlyZWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0lhbVNlc3Npb25FeHBpcmVkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIGludGVyY2VwdChcbiAgICAgICAgcmVxOiBIdHRwUmVxdWVzdDxhbnk+LFxuICAgICAgICBuZXh0OiBIdHRwSGFuZGxlclxuICAgICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4gfCBhbnk+IHtcbiAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSkucGlwZShcbiAgICAgICAgICAgIG1hcChldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzSWFtRXhwaXJlZEhlYWRlcihldmVudCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVkaXJlY3Rpb25Ub0xvZ2luKGV2ZW50KVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2lzSWFtU2Vzc2lvbkV4cGlyZWQubmV4dCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZXZlbnQ7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvci5iaW5kKHRoaXMpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlRXJyb3IoXG4gICAgICAgIGVycjogSHR0cEVycm9yUmVzcG9uc2UgfCBIdHRwRXZlbnQ8YW55PlxuICAgICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgICBjb25zdCBpc1N0YXR1c09rID0gZXJyLnN0YXR1cyA9PT0gSHR0cFN0YXR1c0NvZGUuT2s7XG4gICAgICAgICAgICBjb25zdCBpc1VybEN5YmVyTG9naW4gPSBlcnIudXJsLmluY2x1ZGVzKENZQkVSX0xPR0lOX1BBVEgpO1xuICAgICAgICAgICAgY29uc3QgaXNVcmxBY3ZMb2dpbiA9IGVyci51cmwuaW5jbHVkZXMoQUNWX0xPR0lOX1BBVEgpO1xuXG4gICAgICAgICAgICBpZiAoaXNTdGF0dXNPayAmJiAoaXNVcmxDeWJlckxvZ2luIHx8IGlzVXJsQWN2TG9naW4pKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5faXNJYW1TZXNzaW9uRXhwaXJlZC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -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,35 +32,30 @@ 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
|
|
37
|
-
|
|
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))));
|
|
35
|
+
const ACV_LOGIN_PATH = '/iamlogin';
|
|
36
|
+
const isIamExpiredHeader = (event) => {
|
|
37
|
+
return !!event.headers.get(IAM_SESSION_EXPIRED_HEADER);
|
|
44
38
|
};
|
|
45
|
-
const
|
|
39
|
+
const isRedirectionToLogin = (event) => {
|
|
46
40
|
const isRedirection = event.status === 302 /* Found */;
|
|
47
|
-
const
|
|
48
|
-
|
|
41
|
+
const locationHeader = event.headers.get('Location');
|
|
42
|
+
const isLocationCyberLogin = locationHeader === null || locationHeader === void 0 ? void 0 : locationHeader.includes(CYBER_LOGIN_PATH);
|
|
43
|
+
const isLocationAcvLogin = locationHeader === null || locationHeader === void 0 ? void 0 : locationHeader.includes(ACV_LOGIN_PATH);
|
|
44
|
+
return isRedirection && (isLocationCyberLogin || isLocationAcvLogin);
|
|
49
45
|
};
|
|
50
46
|
class IamExpiredInterceptorService {
|
|
51
47
|
constructor() {
|
|
52
|
-
this.
|
|
48
|
+
this._isIamSessionExpired = new Subject();
|
|
53
49
|
}
|
|
54
|
-
get
|
|
55
|
-
return this.
|
|
50
|
+
get isIamSessionExpired() {
|
|
51
|
+
return this._isIamSessionExpired.asObservable();
|
|
56
52
|
}
|
|
57
53
|
intercept(req, next) {
|
|
58
54
|
return next.handle(req).pipe(map(event => {
|
|
59
55
|
if (event instanceof HttpResponse) {
|
|
60
56
|
if (isIamExpiredHeader(event) ||
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
this._iamExpirationHeaderPresence.next(true);
|
|
57
|
+
isRedirectionToLogin(event)) {
|
|
58
|
+
this._isIamSessionExpired.next(true);
|
|
64
59
|
}
|
|
65
60
|
}
|
|
66
61
|
return event;
|
|
@@ -68,11 +63,11 @@ class IamExpiredInterceptorService {
|
|
|
68
63
|
}
|
|
69
64
|
handleError(err) {
|
|
70
65
|
if (err instanceof HttpErrorResponse) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
66
|
+
const isStatusOk = err.status === 200 /* Ok */;
|
|
67
|
+
const isUrlCyberLogin = err.url.includes(CYBER_LOGIN_PATH);
|
|
68
|
+
const isUrlAcvLogin = err.url.includes(ACV_LOGIN_PATH);
|
|
69
|
+
if (isStatusOk && (isUrlCyberLogin || isUrlAcvLogin)) {
|
|
70
|
+
this._isIamSessionExpired.next(true);
|
|
76
71
|
}
|
|
77
72
|
}
|
|
78
73
|
return throwError(err);
|
|
@@ -9950,7 +9945,7 @@ class RedirectComponent {
|
|
|
9950
9945
|
this.modalHeaderText = 'Information';
|
|
9951
9946
|
this.modalBodyText = `<p>Votre session a expiré.</p>
|
|
9952
9947
|
<p>Vous pouvez vous connecter à nouveau pour continuer à utiliser nos services.</p>`;
|
|
9953
|
-
this.iamInterceptor.
|
|
9948
|
+
this.iamInterceptor.isIamSessionExpired
|
|
9954
9949
|
.pipe(first())
|
|
9955
9950
|
.subscribe(() => this.showModal());
|
|
9956
9951
|
}
|