@progress-chef/platform-http-interceptor 0.0.1
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/README.md +24 -0
- package/esm2022/lib/http-auth.interceptor.mjs +53 -0
- package/esm2022/progress-chef-platform-http-interceptor.mjs +5 -0
- package/esm2022/public-api.mjs +5 -0
- package/fesm2022/progress-chef-platform-http-interceptor.mjs +64 -0
- package/fesm2022/progress-chef-platform-http-interceptor.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/http-auth.interceptor.d.ts +11 -0
- package/package.json +28 -0
- package/public-api.d.ts +1 -0
package/README.md
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# PlatformHttpInterceptor
|
|
2
|
+
|
|
3
|
+
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 16.2.0.
|
|
4
|
+
|
|
5
|
+
## Code scaffolding
|
|
6
|
+
|
|
7
|
+
Run `ng generate component component-name --project platform-http-interceptor` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project platform-http-interceptor`.
|
|
8
|
+
> Note: Don't forget to add `--project platform-http-interceptor` or else it will be added to the default project in your `angular.json` file.
|
|
9
|
+
|
|
10
|
+
## Build
|
|
11
|
+
|
|
12
|
+
Run `ng build platform-http-interceptor` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
13
|
+
|
|
14
|
+
## Publishing
|
|
15
|
+
|
|
16
|
+
After building your library with `ng build platform-http-interceptor`, go to the dist folder `cd dist/platform-http-interceptor` and run `npm publish`.
|
|
17
|
+
|
|
18
|
+
## Running unit tests
|
|
19
|
+
|
|
20
|
+
Run `ng test platform-http-interceptor` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
21
|
+
|
|
22
|
+
## Further help
|
|
23
|
+
|
|
24
|
+
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { catchError, throwError } from 'rxjs';
|
|
3
|
+
import { LocalStorageService, StorageKeys } from '@progress-chef/platform-storage-service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@progress-chef/platform-shared-components";
|
|
6
|
+
export class HttpAuthInterceptor {
|
|
7
|
+
constructor(toastNotificationService) {
|
|
8
|
+
this.toastNotificationService = toastNotificationService;
|
|
9
|
+
}
|
|
10
|
+
intercept(request, next) {
|
|
11
|
+
let authToken = LocalStorageService.getItem(StorageKeys.AUTH_TOKEN);
|
|
12
|
+
if (authToken) {
|
|
13
|
+
const authReq = request.clone({
|
|
14
|
+
setHeaders: {
|
|
15
|
+
Authorization: `Bearer ${authToken}`
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
return next.handle(authReq).pipe(catchError((error) => {
|
|
19
|
+
if (error.status === 401) {
|
|
20
|
+
const loginType = LocalStorageService.getItem(StorageKeys.LOGIN_TYPE);
|
|
21
|
+
if (loginType === 'saml' || loginType === 'oauth') {
|
|
22
|
+
LocalStorageService.removeItem(StorageKeys.USER_NAME);
|
|
23
|
+
LocalStorageService.removeItem(StorageKeys.IS_REMEMBER_ME);
|
|
24
|
+
}
|
|
25
|
+
LocalStorageService.setItem(StorageKeys.IS_USER_ORG_AND_ROLE_SET, false);
|
|
26
|
+
LocalStorageService.setItem(StorageKeys.IS_USER_AUTHENTICATED, false);
|
|
27
|
+
LocalStorageService.removeItem(StorageKeys.AUTH_TOKEN);
|
|
28
|
+
LocalStorageService.removeItem(StorageKeys.LOGIN_TYPE);
|
|
29
|
+
LocalStorageService.removeItem(StorageKeys.IDENTITY_TOKEN);
|
|
30
|
+
LocalStorageService.removeItem(StorageKeys.USER_ORG_AND_ROLE_TOKEN);
|
|
31
|
+
// This clear the memory cache including the component and store.
|
|
32
|
+
window.location.href = `${window.location.origin}/login`;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
const err = error?.error;
|
|
36
|
+
this.toastNotificationService.showToastNotification({
|
|
37
|
+
content: `${err?.message || error.message}`,
|
|
38
|
+
type: { style: 'error', icon: true },
|
|
39
|
+
closable: true
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
return throwError(() => error);
|
|
43
|
+
}));
|
|
44
|
+
}
|
|
45
|
+
return next.handle(request);
|
|
46
|
+
}
|
|
47
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HttpAuthInterceptor, deps: [{ token: i1.ToastNotificationService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
48
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HttpAuthInterceptor }); }
|
|
49
|
+
}
|
|
50
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HttpAuthInterceptor, decorators: [{
|
|
51
|
+
type: Injectable
|
|
52
|
+
}], ctorParameters: function () { return [{ type: i1.ToastNotificationService }]; } });
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1hdXRoLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcGxhdGZvcm0taHR0cC1pbnRlcmNlcHRvci9zcmMvbGliL2h0dHAtYXV0aC5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBUTNDLE9BQU8sRUFBYyxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7O0FBRzNGLE1BQU0sT0FBTyxtQkFBbUI7SUFFOUIsWUFBb0Isd0JBQWtEO1FBQWxELDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7SUFBSSxDQUFDO0lBRTNFLFNBQVMsQ0FBQyxPQUE2QixFQUFFLElBQWlCO1FBQ3hELElBQUksU0FBUyxHQUFHLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFcEUsSUFBSSxTQUFTLEVBQUU7WUFDYixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUM1QixVQUFVLEVBQUU7b0JBQ1YsYUFBYSxFQUFFLFVBQVUsU0FBUyxFQUFFO2lCQUNyQzthQUNGLENBQUMsQ0FBQTtZQUVGLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQzlCLFVBQVUsQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRTtnQkFDdEMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRTtvQkFDeEIsTUFBTSxTQUFTLEdBQUcsbUJBQW1CLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDdEUsSUFBSSxTQUFTLEtBQUssTUFBTSxJQUFJLFNBQVMsS0FBSyxPQUFPLEVBQUU7d0JBQ2pELG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7d0JBQ3RELG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7cUJBQzVEO29CQUNELG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQ3pFLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQ3RFLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ3ZELG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ3ZELG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7b0JBQzNELG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsdUJBQXVCLENBQUMsQ0FBQztvQkFDcEUsaUVBQWlFO29CQUNqRSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxRQUFRLENBQUE7aUJBQ3pEO3FCQUFNO29CQUNMLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxLQUFLLENBQUM7b0JBQ3pCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxxQkFBcUIsQ0FBQzt3QkFDbEQsT0FBTyxFQUFFLEdBQUcsR0FBRyxFQUFFLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO3dCQUMzQyxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7d0JBQ3BDLFFBQVEsRUFBRSxJQUFJO3FCQUNmLENBQUMsQ0FBQztpQkFDSjtnQkFDRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNoQyxDQUFDLENBQUMsQ0FDSCxDQUFDO1NBQ0g7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDN0IsQ0FBQzsrR0EzQ1UsbUJBQW1CO21IQUFuQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBIdHRwUmVxdWVzdCxcbiAgSHR0cEhhbmRsZXIsXG4gIEh0dHBFdmVudCxcbiAgSHR0cEludGVyY2VwdG9yLFxuICBIdHRwRXJyb3JSZXNwb25zZVxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjYXRjaEVycm9yLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUb2FzdE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICdAcHJvZ3Jlc3MtY2hlZi9wbGF0Zm9ybS1zaGFyZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VTZXJ2aWNlLCBTdG9yYWdlS2V5cyB9IGZyb20gJ0Bwcm9ncmVzcy1jaGVmL3BsYXRmb3JtLXN0b3JhZ2Utc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBIdHRwQXV0aEludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRvYXN0Tm90aWZpY2F0aW9uU2VydmljZTogVG9hc3ROb3RpZmljYXRpb25TZXJ2aWNlKSB7IH1cblxuICBpbnRlcmNlcHQocmVxdWVzdDogSHR0cFJlcXVlc3Q8dW5rbm93bj4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8dW5rbm93bj4+IHtcbiAgICBsZXQgYXV0aFRva2VuID0gTG9jYWxTdG9yYWdlU2VydmljZS5nZXRJdGVtKFN0b3JhZ2VLZXlzLkFVVEhfVE9LRU4pO1xuXG4gICAgaWYgKGF1dGhUb2tlbikge1xuICAgICAgY29uc3QgYXV0aFJlcSA9IHJlcXVlc3QuY2xvbmUoe1xuICAgICAgICBzZXRIZWFkZXJzOiB7XG4gICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke2F1dGhUb2tlbn1gXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIHJldHVybiBuZXh0LmhhbmRsZShhdXRoUmVxKS5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDEpIHtcbiAgICAgICAgICAgIGNvbnN0IGxvZ2luVHlwZSA9IExvY2FsU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbShTdG9yYWdlS2V5cy5MT0dJTl9UWVBFKTtcbiAgICAgICAgICAgIGlmIChsb2dpblR5cGUgPT09ICdzYW1sJyB8fCBsb2dpblR5cGUgPT09ICdvYXV0aCcpIHtcbiAgICAgICAgICAgICAgTG9jYWxTdG9yYWdlU2VydmljZS5yZW1vdmVJdGVtKFN0b3JhZ2VLZXlzLlVTRVJfTkFNRSk7XG4gICAgICAgICAgICAgIExvY2FsU3RvcmFnZVNlcnZpY2UucmVtb3ZlSXRlbShTdG9yYWdlS2V5cy5JU19SRU1FTUJFUl9NRSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBMb2NhbFN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0oU3RvcmFnZUtleXMuSVNfVVNFUl9PUkdfQU5EX1JPTEVfU0VULCBmYWxzZSk7XG4gICAgICAgICAgICBMb2NhbFN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0oU3RvcmFnZUtleXMuSVNfVVNFUl9BVVRIRU5USUNBVEVELCBmYWxzZSk7XG4gICAgICAgICAgICBMb2NhbFN0b3JhZ2VTZXJ2aWNlLnJlbW92ZUl0ZW0oU3RvcmFnZUtleXMuQVVUSF9UT0tFTik7XG4gICAgICAgICAgICBMb2NhbFN0b3JhZ2VTZXJ2aWNlLnJlbW92ZUl0ZW0oU3RvcmFnZUtleXMuTE9HSU5fVFlQRSk7XG4gICAgICAgICAgICBMb2NhbFN0b3JhZ2VTZXJ2aWNlLnJlbW92ZUl0ZW0oU3RvcmFnZUtleXMuSURFTlRJVFlfVE9LRU4pO1xuICAgICAgICAgICAgTG9jYWxTdG9yYWdlU2VydmljZS5yZW1vdmVJdGVtKFN0b3JhZ2VLZXlzLlVTRVJfT1JHX0FORF9ST0xFX1RPS0VOKTtcbiAgICAgICAgICAgIC8vIFRoaXMgY2xlYXIgdGhlIG1lbW9yeSBjYWNoZSBpbmNsdWRpbmcgdGhlIGNvbXBvbmVudCBhbmQgc3RvcmUuXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAke3dpbmRvdy5sb2NhdGlvbi5vcmlnaW59L2xvZ2luYFxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBlcnIgPSBlcnJvcj8uZXJyb3I7XG4gICAgICAgICAgICB0aGlzLnRvYXN0Tm90aWZpY2F0aW9uU2VydmljZS5zaG93VG9hc3ROb3RpZmljYXRpb24oe1xuICAgICAgICAgICAgICBjb250ZW50OiBgJHtlcnI/Lm1lc3NhZ2UgfHwgZXJyb3IubWVzc2FnZX1gLFxuICAgICAgICAgICAgICB0eXBlOiB7IHN0eWxlOiAnZXJyb3InLCBpY29uOiB0cnVlIH0sXG4gICAgICAgICAgICAgIGNsb3NhYmxlOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdClcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtY2hlZi1wbGF0Zm9ybS1odHRwLWludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvcGxhdGZvcm0taHR0cC1pbnRlcmNlcHRvci9zcmMvcHJvZ3Jlc3MtY2hlZi1wbGF0Zm9ybS1odHRwLWludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of platform-http-interceptor
|
|
3
|
+
*/
|
|
4
|
+
export * from './lib/http-auth.interceptor';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3BsYXRmb3JtLWh0dHAtaW50ZXJjZXB0b3Ivc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBwbGF0Zm9ybS1odHRwLWludGVyY2VwdG9yXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvaHR0cC1hdXRoLmludGVyY2VwdG9yJztcbiJdfQ==
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { catchError, throwError } from 'rxjs';
|
|
4
|
+
import { LocalStorageService, StorageKeys } from '@progress-chef/platform-storage-service';
|
|
5
|
+
import * as i1 from '@progress-chef/platform-shared-components';
|
|
6
|
+
|
|
7
|
+
class HttpAuthInterceptor {
|
|
8
|
+
constructor(toastNotificationService) {
|
|
9
|
+
this.toastNotificationService = toastNotificationService;
|
|
10
|
+
}
|
|
11
|
+
intercept(request, next) {
|
|
12
|
+
let authToken = LocalStorageService.getItem(StorageKeys.AUTH_TOKEN);
|
|
13
|
+
if (authToken) {
|
|
14
|
+
const authReq = request.clone({
|
|
15
|
+
setHeaders: {
|
|
16
|
+
Authorization: `Bearer ${authToken}`
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
return next.handle(authReq).pipe(catchError((error) => {
|
|
20
|
+
if (error.status === 401) {
|
|
21
|
+
const loginType = LocalStorageService.getItem(StorageKeys.LOGIN_TYPE);
|
|
22
|
+
if (loginType === 'saml' || loginType === 'oauth') {
|
|
23
|
+
LocalStorageService.removeItem(StorageKeys.USER_NAME);
|
|
24
|
+
LocalStorageService.removeItem(StorageKeys.IS_REMEMBER_ME);
|
|
25
|
+
}
|
|
26
|
+
LocalStorageService.setItem(StorageKeys.IS_USER_ORG_AND_ROLE_SET, false);
|
|
27
|
+
LocalStorageService.setItem(StorageKeys.IS_USER_AUTHENTICATED, false);
|
|
28
|
+
LocalStorageService.removeItem(StorageKeys.AUTH_TOKEN);
|
|
29
|
+
LocalStorageService.removeItem(StorageKeys.LOGIN_TYPE);
|
|
30
|
+
LocalStorageService.removeItem(StorageKeys.IDENTITY_TOKEN);
|
|
31
|
+
LocalStorageService.removeItem(StorageKeys.USER_ORG_AND_ROLE_TOKEN);
|
|
32
|
+
// This clear the memory cache including the component and store.
|
|
33
|
+
window.location.href = `${window.location.origin}/login`;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
const err = error?.error;
|
|
37
|
+
this.toastNotificationService.showToastNotification({
|
|
38
|
+
content: `${err?.message || error.message}`,
|
|
39
|
+
type: { style: 'error', icon: true },
|
|
40
|
+
closable: true
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
return throwError(() => error);
|
|
44
|
+
}));
|
|
45
|
+
}
|
|
46
|
+
return next.handle(request);
|
|
47
|
+
}
|
|
48
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HttpAuthInterceptor, deps: [{ token: i1.ToastNotificationService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
49
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HttpAuthInterceptor }); }
|
|
50
|
+
}
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HttpAuthInterceptor, decorators: [{
|
|
52
|
+
type: Injectable
|
|
53
|
+
}], ctorParameters: function () { return [{ type: i1.ToastNotificationService }]; } });
|
|
54
|
+
|
|
55
|
+
/*
|
|
56
|
+
* Public API Surface of platform-http-interceptor
|
|
57
|
+
*/
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Generated bundle index. Do not edit.
|
|
61
|
+
*/
|
|
62
|
+
|
|
63
|
+
export { HttpAuthInterceptor };
|
|
64
|
+
//# sourceMappingURL=progress-chef-platform-http-interceptor.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress-chef-platform-http-interceptor.mjs","sources":["../../../projects/platform-http-interceptor/src/lib/http-auth.interceptor.ts","../../../projects/platform-http-interceptor/src/public-api.ts","../../../projects/platform-http-interceptor/src/progress-chef-platform-http-interceptor.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport {\n HttpRequest,\n HttpHandler,\n HttpEvent,\n HttpInterceptor,\n HttpErrorResponse\n} from '@angular/common/http';\nimport { Observable, catchError, throwError } from 'rxjs';\nimport { ToastNotificationService } from '@progress-chef/platform-shared-components';\nimport { LocalStorageService, StorageKeys } from '@progress-chef/platform-storage-service';\n\n@Injectable()\nexport class HttpAuthInterceptor implements HttpInterceptor {\n\n constructor(private toastNotificationService: ToastNotificationService) { }\n\n intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\n let authToken = LocalStorageService.getItem(StorageKeys.AUTH_TOKEN);\n\n if (authToken) {\n const authReq = request.clone({\n setHeaders: {\n Authorization: `Bearer ${authToken}`\n }\n })\n\n return next.handle(authReq).pipe(\n catchError((error: HttpErrorResponse) => {\n if (error.status === 401) {\n const loginType = LocalStorageService.getItem(StorageKeys.LOGIN_TYPE);\n if (loginType === 'saml' || loginType === 'oauth') {\n LocalStorageService.removeItem(StorageKeys.USER_NAME);\n LocalStorageService.removeItem(StorageKeys.IS_REMEMBER_ME);\n }\n LocalStorageService.setItem(StorageKeys.IS_USER_ORG_AND_ROLE_SET, false);\n LocalStorageService.setItem(StorageKeys.IS_USER_AUTHENTICATED, false);\n LocalStorageService.removeItem(StorageKeys.AUTH_TOKEN);\n LocalStorageService.removeItem(StorageKeys.LOGIN_TYPE);\n LocalStorageService.removeItem(StorageKeys.IDENTITY_TOKEN);\n LocalStorageService.removeItem(StorageKeys.USER_ORG_AND_ROLE_TOKEN);\n // This clear the memory cache including the component and store.\n window.location.href = `${window.location.origin}/login`\n } else {\n const err = error?.error;\n this.toastNotificationService.showToastNotification({\n content: `${err?.message || error.message}`,\n type: { style: 'error', icon: true },\n closable: true\n });\n }\n return throwError(() => error)\n })\n );\n }\n return next.handle(request)\n }\n}\n","/*\n * Public API Surface of platform-http-interceptor\n */\n\nexport * from './lib/http-auth.interceptor';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MAaa,mBAAmB,CAAA;AAE9B,IAAA,WAAA,CAAoB,wBAAkD,EAAA;QAAlD,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB,CAA0B;KAAK;IAE3E,SAAS,CAAC,OAA6B,EAAE,IAAiB,EAAA;QACxD,IAAI,SAAS,GAAG,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AAEpE,QAAA,IAAI,SAAS,EAAE;AACb,YAAA,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;AAC5B,gBAAA,UAAU,EAAE;oBACV,aAAa,EAAE,CAAU,OAAA,EAAA,SAAS,CAAE,CAAA;AACrC,iBAAA;AACF,aAAA,CAAC,CAAA;AAEF,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAC9B,UAAU,CAAC,CAAC,KAAwB,KAAI;AACtC,gBAAA,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE;oBACxB,MAAM,SAAS,GAAG,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AACtE,oBAAA,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,OAAO,EAAE;AACjD,wBAAA,mBAAmB,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AACtD,wBAAA,mBAAmB,CAAC,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;AAC5D,qBAAA;oBACD,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;oBACzE,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;AACtE,oBAAA,mBAAmB,CAAC,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AACvD,oBAAA,mBAAmB,CAAC,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AACvD,oBAAA,mBAAmB,CAAC,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;AAC3D,oBAAA,mBAAmB,CAAC,UAAU,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;;AAEpE,oBAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAA,EAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAA,MAAA,CAAQ,CAAA;AACzD,iBAAA;AAAM,qBAAA;AACL,oBAAA,MAAM,GAAG,GAAG,KAAK,EAAE,KAAK,CAAC;AACzB,oBAAA,IAAI,CAAC,wBAAwB,CAAC,qBAAqB,CAAC;wBAClD,OAAO,EAAE,GAAG,GAAG,EAAE,OAAO,IAAI,KAAK,CAAC,OAAO,CAAE,CAAA;wBAC3C,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;AACpC,wBAAA,QAAQ,EAAE,IAAI;AACf,qBAAA,CAAC,CAAC;AACJ,iBAAA;AACD,gBAAA,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC,CAAA;aAC/B,CAAC,CACH,CAAC;AACH,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;KAC5B;+GA3CU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;mHAAnB,mBAAmB,EAAA,CAAA,CAAA,EAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;;ACZX;;AAEG;;ACFH;;AAEG;;;;"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { ToastNotificationService } from '@progress-chef/platform-shared-components';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class HttpAuthInterceptor implements HttpInterceptor {
|
|
6
|
+
private toastNotificationService;
|
|
7
|
+
constructor(toastNotificationService: ToastNotificationService);
|
|
8
|
+
intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>>;
|
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<HttpAuthInterceptor, never>;
|
|
10
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<HttpAuthInterceptor>;
|
|
11
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@progress-chef/platform-http-interceptor",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"peerDependencies": {
|
|
5
|
+
"@angular/common": "^16.2.0",
|
|
6
|
+
"@angular/core": "^16.2.0"
|
|
7
|
+
},
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"tslib": "^2.3.0"
|
|
10
|
+
},
|
|
11
|
+
"sideEffects": false,
|
|
12
|
+
"publishConfig": {
|
|
13
|
+
"access": "public"
|
|
14
|
+
},
|
|
15
|
+
"module": "fesm2022/progress-chef-platform-http-interceptor.mjs",
|
|
16
|
+
"typings": "index.d.ts",
|
|
17
|
+
"exports": {
|
|
18
|
+
"./package.json": {
|
|
19
|
+
"default": "./package.json"
|
|
20
|
+
},
|
|
21
|
+
".": {
|
|
22
|
+
"types": "./index.d.ts",
|
|
23
|
+
"esm2022": "./esm2022/progress-chef-platform-http-interceptor.mjs",
|
|
24
|
+
"esm": "./esm2022/progress-chef-platform-http-interceptor.mjs",
|
|
25
|
+
"default": "./fesm2022/progress-chef-platform-http-interceptor.mjs"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
package/public-api.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './lib/http-auth.interceptor';
|