1 | import { Inject, Injectable } from '@angular/core';
|
2 | import { switchMap } from 'rxjs/operators';
|
3 | import { NbAuthService } from '../auth.service';
|
4 | import { NB_AUTH_TOKEN_INTERCEPTOR_FILTER } from '../../auth.options';
|
5 | import * as i0 from "@angular/core";
|
6 | export class NbAuthJWTInterceptor {
|
7 | constructor(injector, filter) {
|
8 | this.injector = injector;
|
9 | this.filter = filter;
|
10 | }
|
11 | intercept(req, next) {
|
12 | // do not intercept request whose urls are filtered by the injected filter
|
13 | if (!this.filter(req)) {
|
14 | return this.authService.isAuthenticatedOrRefresh()
|
15 | .pipe(switchMap(authenticated => {
|
16 | if (authenticated) {
|
17 | return this.authService.getToken().pipe(switchMap((token) => {
|
18 | const JWT = `Bearer ${token.getValue()}`;
|
19 | req = req.clone({
|
20 | setHeaders: {
|
21 | Authorization: JWT,
|
22 | },
|
23 | });
|
24 | return next.handle(req);
|
25 | }));
|
26 | }
|
27 | else {
|
28 | // Request is sent to server without authentication so that the client code
|
29 | // receives the 401/403 error and can act as desired ('session expired', redirect to login, aso)
|
30 | return next.handle(req);
|
31 | }
|
32 | }));
|
33 | }
|
34 | else {
|
35 | return next.handle(req);
|
36 | }
|
37 | }
|
38 | get authService() {
|
39 | return this.injector.get(NbAuthService);
|
40 | }
|
41 | }
|
42 | NbAuthJWTInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: NbAuthJWTInterceptor, deps: [{ token: i0.Injector }, { token: NB_AUTH_TOKEN_INTERCEPTOR_FILTER }], target: i0.ɵɵFactoryTarget.Injectable });
|
43 | NbAuthJWTInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: NbAuthJWTInterceptor });
|
44 | i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: NbAuthJWTInterceptor, decorators: [{
|
45 | type: Injectable
|
46 | }], ctorParameters: function () { return [{ type: i0.Injector }, { type: undefined, decorators: [{
|
47 | type: Inject,
|
48 | args: [NB_AUTH_TOKEN_INTERCEPTOR_FILTER]
|
49 | }] }]; } });
|
50 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LWludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2ZyYW1ld29yay9hdXRoL3NlcnZpY2VzL2ludGVyY2VwdG9ycy9qd3QtaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFHN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFHdEUsTUFBTSxPQUFPLG9CQUFvQjtJQUUvQixZQUFvQixRQUFrQixFQUMwQixNQUFNO1FBRGxELGFBQVEsR0FBUixRQUFRLENBQVU7UUFDMEIsV0FBTSxHQUFOLE1BQU0sQ0FBQTtJQUN0RSxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQXFCLEVBQUUsSUFBaUI7UUFDaEQsMEVBQTBFO1FBQ3hFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyx3QkFBd0IsRUFBRTtpQkFDL0MsSUFBSSxDQUNILFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRTtnQkFDeEIsSUFBSSxhQUFhLEVBQUU7b0JBQ2YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FDckMsU0FBUyxDQUFDLENBQUMsS0FBa0IsRUFBRSxFQUFFO3dCQUMvQixNQUFNLEdBQUcsR0FBRyxVQUFVLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO3dCQUN6QyxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQzs0QkFDZCxVQUFVLEVBQUU7Z0NBQ1YsYUFBYSxFQUFFLEdBQUc7NkJBQ25CO3lCQUNGLENBQUMsQ0FBQzt3QkFDSCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQzFCLENBQUMsQ0FBQyxDQUNILENBQUE7aUJBQ0o7cUJBQU07b0JBQ0osMkVBQTJFO29CQUMzRSxnR0FBZ0c7b0JBQ2pHLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDekI7WUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFBO1NBQ0o7YUFBTTtZQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNILENBQUM7SUFFRCxJQUFjLFdBQVc7UUFDdkIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMxQyxDQUFDOztrSEF0Q1Usb0JBQW9CLDBDQUdYLGdDQUFnQztzSEFIekMsb0JBQW9COzRGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVU7OzBCQUlJLE1BQU07MkJBQUMsZ0NBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cEV2ZW50LCBIdHRwSGFuZGxlciwgSHR0cEludGVyY2VwdG9yLCBIdHRwUmVxdWVzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE5iQXV0aFRva2VuIH0gZnJvbSAnLi4vdG9rZW4vdG9rZW4nO1xuaW1wb3J0IHsgTmJBdXRoU2VydmljZSB9IGZyb20gJy4uL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBOQl9BVVRIX1RPS0VOX0lOVEVSQ0VQVE9SX0ZJTFRFUiB9IGZyb20gJy4uLy4uL2F1dGgub3B0aW9ucyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOYkF1dGhKV1RJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgICAgICAgIEBJbmplY3QoTkJfQVVUSF9UT0tFTl9JTlRFUkNFUFRPUl9GSUxURVIpIHByb3RlY3RlZCBmaWx0ZXIpIHtcbiAgfVxuXG4gIGludGVyY2VwdChyZXE6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIC8vIGRvIG5vdCBpbnRlcmNlcHQgcmVxdWVzdCB3aG9zZSB1cmxzIGFyZSBmaWx0ZXJlZCBieSB0aGUgaW5qZWN0ZWQgZmlsdGVyXG4gICAgICBpZiAoIXRoaXMuZmlsdGVyKHJlcSkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2UuaXNBdXRoZW50aWNhdGVkT3JSZWZyZXNoKClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcChhdXRoZW50aWNhdGVkID0+IHtcbiAgICAgICAgICAgICAgaWYgKGF1dGhlbnRpY2F0ZWQpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmF1dGhTZXJ2aWNlLmdldFRva2VuKCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoTWFwKCh0b2tlbjogTmJBdXRoVG9rZW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBKV1QgPSBgQmVhcmVyICR7dG9rZW4uZ2V0VmFsdWUoKX1gO1xuICAgICAgICAgICAgICAgICAgICAgIHJlcSA9IHJlcS5jbG9uZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRIZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEF1dGhvcml6YXRpb246IEpXVCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAvLyBSZXF1ZXN0IGlzIHNlbnQgdG8gc2VydmVyIHdpdGhvdXQgYXV0aGVudGljYXRpb24gc28gdGhhdCB0aGUgY2xpZW50IGNvZGVcbiAgICAgICAgICAgICAgICAgLy8gcmVjZWl2ZXMgdGhlIDQwMS80MDMgZXJyb3IgYW5kIGNhbiBhY3QgYXMgZGVzaXJlZCAoJ3Nlc3Npb24gZXhwaXJlZCcsIHJlZGlyZWN0IHRvIGxvZ2luLCBhc28pXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGF1dGhTZXJ2aWNlKCk6IE5iQXV0aFNlcnZpY2Uge1xuICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChOYkF1dGhTZXJ2aWNlKTtcbiAgfVxuXG59XG4iXX0= |
\ | No newline at end of file |