UNPKG

@nebular/auth

Version:
50 lines 6.83 kB
import { Inject, Injectable } from '@angular/core'; import { switchMap } from 'rxjs/operators'; import { NbAuthService } from '../auth.service'; import { NB_AUTH_TOKEN_INTERCEPTOR_FILTER } from '../../auth.options'; import * as i0 from "@angular/core"; export class NbAuthJWTInterceptor { constructor(injector, filter) { this.injector = injector; this.filter = filter; } intercept(req, next) { // do not intercept request whose urls are filtered by the injected filter if (!this.filter(req)) { return this.authService.isAuthenticatedOrRefresh() .pipe(switchMap(authenticated => { if (authenticated) { return this.authService.getToken().pipe(switchMap((token) => { const JWT = `Bearer ${token.getValue()}`; req = req.clone({ setHeaders: { Authorization: JWT, }, }); return next.handle(req); })); } else { // Request is sent to server without authentication so that the client code // receives the 401/403 error and can act as desired ('session expired', redirect to login, aso) return next.handle(req); } })); } else { return next.handle(req); } } get authService() { return this.injector.get(NbAuthService); } } NbAuthJWTInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: NbAuthJWTInterceptor, deps: [{ token: i0.Injector }, { token: NB_AUTH_TOKEN_INTERCEPTOR_FILTER }], target: i0.ɵɵFactoryTarget.Injectable }); NbAuthJWTInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: NbAuthJWTInterceptor }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: NbAuthJWTInterceptor, decorators: [{ type: Injectable }], ctorParameters: function () { return [{ type: i0.Injector }, { type: undefined, decorators: [{ type: Inject, args: [NB_AUTH_TOKEN_INTERCEPTOR_FILTER] }] }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LWludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2ZyYW1ld29yay9hdXRoL3NlcnZpY2VzL2ludGVyY2VwdG9ycy9qd3QtaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFHN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFHdEUsTUFBTSxPQUFPLG9CQUFvQjtJQUUvQixZQUFvQixRQUFrQixFQUMwQixNQUFNO1FBRGxELGFBQVEsR0FBUixRQUFRLENBQVU7UUFDMEIsV0FBTSxHQUFOLE1BQU0sQ0FBQTtJQUN0RSxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQXFCLEVBQUUsSUFBaUI7UUFDaEQsMEVBQTBFO1FBQ3hFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyx3QkFBd0IsRUFBRTtpQkFDL0MsSUFBSSxDQUNILFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRTtnQkFDeEIsSUFBSSxhQUFhLEVBQUU7b0JBQ2YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FDckMsU0FBUyxDQUFDLENBQUMsS0FBa0IsRUFBRSxFQUFFO3dCQUMvQixNQUFNLEdBQUcsR0FBRyxVQUFVLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO3dCQUN6QyxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQzs0QkFDZCxVQUFVLEVBQUU7Z0NBQ1YsYUFBYSxFQUFFLEdBQUc7NkJBQ25CO3lCQUNGLENBQUMsQ0FBQzt3QkFDSCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQzFCLENBQUMsQ0FBQyxDQUNILENBQUE7aUJBQ0o7cUJBQU07b0JBQ0osMkVBQTJFO29CQUMzRSxnR0FBZ0c7b0JBQ2pHLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDekI7WUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFBO1NBQ0o7YUFBTTtZQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNILENBQUM7SUFFRCxJQUFjLFdBQVc7UUFDdkIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMxQyxDQUFDOztpSEF0Q1Usb0JBQW9CLDBDQUdYLGdDQUFnQztxSEFIekMsb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVU7OzBCQUlJLE1BQU07MkJBQUMsZ0NBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cEV2ZW50LCBIdHRwSGFuZGxlciwgSHR0cEludGVyY2VwdG9yLCBIdHRwUmVxdWVzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE5iQXV0aFRva2VuIH0gZnJvbSAnLi4vdG9rZW4vdG9rZW4nO1xuaW1wb3J0IHsgTmJBdXRoU2VydmljZSB9IGZyb20gJy4uL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBOQl9BVVRIX1RPS0VOX0lOVEVSQ0VQVE9SX0ZJTFRFUiB9IGZyb20gJy4uLy4uL2F1dGgub3B0aW9ucyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOYkF1dGhKV1RJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgICAgICAgIEBJbmplY3QoTkJfQVVUSF9UT0tFTl9JTlRFUkNFUFRPUl9GSUxURVIpIHByb3RlY3RlZCBmaWx0ZXIpIHtcbiAgfVxuXG4gIGludGVyY2VwdChyZXE6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIC8vIGRvIG5vdCBpbnRlcmNlcHQgcmVxdWVzdCB3aG9zZSB1cmxzIGFyZSBmaWx0ZXJlZCBieSB0aGUgaW5qZWN0ZWQgZmlsdGVyXG4gICAgICBpZiAoIXRoaXMuZmlsdGVyKHJlcSkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2UuaXNBdXRoZW50aWNhdGVkT3JSZWZyZXNoKClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcChhdXRoZW50aWNhdGVkID0+IHtcbiAgICAgICAgICAgICAgaWYgKGF1dGhlbnRpY2F0ZWQpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmF1dGhTZXJ2aWNlLmdldFRva2VuKCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoTWFwKCh0b2tlbjogTmJBdXRoVG9rZW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBKV1QgPSBgQmVhcmVyICR7dG9rZW4uZ2V0VmFsdWUoKX1gO1xuICAgICAgICAgICAgICAgICAgICAgIHJlcSA9IHJlcS5jbG9uZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRIZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEF1dGhvcml6YXRpb246IEpXVCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAvLyBSZXF1ZXN0IGlzIHNlbnQgdG8gc2VydmVyIHdpdGhvdXQgYXV0aGVudGljYXRpb24gc28gdGhhdCB0aGUgY2xpZW50IGNvZGVcbiAgICAgICAgICAgICAgICAgLy8gcmVjZWl2ZXMgdGhlIDQwMS80MDMgZXJyb3IgYW5kIGNhbiBhY3QgYXMgZGVzaXJlZCAoJ3Nlc3Npb24gZXhwaXJlZCcsIHJlZGlyZWN0IHRvIGxvZ2luLCBhc28pXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGF1dGhTZXJ2aWNlKCk6IE5iQXV0aFNlcnZpY2Uge1xuICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChOYkF1dGhTZXJ2aWNlKTtcbiAgfVxuXG59XG4iXX0=