UNPKG

@netgrif/components-core

Version:

Netgrif Application engine frontend core Angular library

52 lines 8.3 kB
import { Injectable } from '@angular/core'; import { HttpErrorResponse, HttpResponse } from '@angular/common/http'; import { throwError } from 'rxjs'; import { catchError, tap } from 'rxjs/operators'; import * as i0 from "@angular/core"; import * as i1 from "../session/services/session.service"; import * as i2 from "../../routing/redirect-service/redirect.service"; import * as i3 from "../anonymous/anonymous.service"; import * as i4 from "../session/services/session-idle-timer.service"; export class AuthenticationInterceptor { _session; _redirect; _anonymousService; idleTimerService; constructor(_session, _redirect, _anonymousService, idleTimerService) { this._session = _session; this._redirect = _redirect; this._anonymousService = _anonymousService; this.idleTimerService = idleTimerService; } intercept(req, next) { if (!this._session) { return next.handle(req); } if (this._session && !!this._session.sessionToken) { req = req.clone({ headers: req.headers.set(this._session.sessionHeader, this._session.sessionToken) }); this.idleTimerService.resetTimer(); } return next.handle(req).pipe(tap(event => { if (event instanceof HttpResponse) { if (event.headers.has(this._session.sessionHeader) && !event.headers.has(this._anonymousService.jwtHeader)) { this._session.setVerifiedToken(event.headers.get(this._session.sessionHeader)); } } }), catchError(errorEvent => { if (errorEvent instanceof HttpErrorResponse && errorEvent.status === 401) { console.debug('Authentication token is invalid. Clearing session token'); this._session.clear(); this._redirect.redirect(this._redirect.resolveLoginPath()); } return throwError(errorEvent); })); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthenticationInterceptor, deps: [{ token: i1.SessionService }, { token: i2.RedirectService }, { token: i3.AnonymousService }, { token: i4.SessionIdleTimerService }], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthenticationInterceptor }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthenticationInterceptor, decorators: [{ type: Injectable }], ctorParameters: () => [{ type: i1.SessionService }, { type: i2.RedirectService }, { type: i3.AnonymousService }, { type: i4.SessionIdleTimerService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24taW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2F1dGhlbnRpY2F0aW9uL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLWludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUNILGlCQUFpQixFQUtqQixZQUFZLEVBQ2YsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQWEsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBQyxVQUFVLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQU8vQyxNQUFNLE9BQU8seUJBQXlCO0lBRWQ7SUFDQTtJQUNBO0lBQ0E7SUFIcEIsWUFBb0IsUUFBd0IsRUFDeEIsU0FBMEIsRUFDMUIsaUJBQW1DLEVBQ25DLGdCQUF5QztRQUh6QyxhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUN4QixjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUMxQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBQ25DLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBeUI7SUFDN0QsQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUFxQixFQUFFLElBQWlCO1FBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2hCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMzQjtRQUVELElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUU7WUFDL0MsR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7Z0JBQ1osT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO2FBQ3BGLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUN0QztRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQ3hCLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNSLElBQUksS0FBSyxZQUFZLFlBQVksRUFBRTtnQkFDL0IsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxFQUFFO29CQUN4RyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztpQkFDbEY7YUFDSjtRQUNMLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUNwQixJQUFJLFVBQVUsWUFBWSxpQkFBaUIsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRTtnQkFDdEUsT0FBTyxDQUFDLEtBQUssQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO2dCQUN6RSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQzthQUM5RDtZQUNELE9BQU8sVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO3dHQXBDUSx5QkFBeUI7NEdBQXpCLHlCQUF5Qjs7NEZBQXpCLHlCQUF5QjtrQkFEckMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEh0dHBFcnJvclJlc3BvbnNlLFxuICAgIEh0dHBFdmVudCxcbiAgICBIdHRwSGFuZGxlcixcbiAgICBIdHRwSW50ZXJjZXB0b3IsXG4gICAgSHR0cFJlcXVlc3QsXG4gICAgSHR0cFJlc3BvbnNlXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgdGhyb3dFcnJvcn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2NhdGNoRXJyb3IsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtTZXNzaW9uU2VydmljZX0gZnJvbSAnLi4vc2Vzc2lvbi9zZXJ2aWNlcy9zZXNzaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtSZWRpcmVjdFNlcnZpY2V9IGZyb20gJy4uLy4uL3JvdXRpbmcvcmVkaXJlY3Qtc2VydmljZS9yZWRpcmVjdC5zZXJ2aWNlJztcbmltcG9ydCB7QW5vbnltb3VzU2VydmljZX0gZnJvbSAnLi4vYW5vbnltb3VzL2Fub255bW91cy5zZXJ2aWNlJztcbmltcG9ydCB7U2Vzc2lvbklkbGVUaW1lclNlcnZpY2V9IGZyb20gXCIuLi9zZXNzaW9uL3NlcnZpY2VzL3Nlc3Npb24taWRsZS10aW1lci5zZXJ2aWNlXCI7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBdXRoZW50aWNhdGlvbkludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3JlZGlyZWN0OiBSZWRpcmVjdFNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfYW5vbnltb3VzU2VydmljZTogQW5vbnltb3VzU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIGlkbGVUaW1lclNlcnZpY2U6IFNlc3Npb25JZGxlVGltZXJTZXJ2aWNlKSB7XG4gICAgfVxuXG4gICAgaW50ZXJjZXB0KHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgICAgIGlmICghdGhpcy5fc2Vzc2lvbikge1xuICAgICAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fc2Vzc2lvbiAmJiAhIXRoaXMuX3Nlc3Npb24uc2Vzc2lvblRva2VuKSB7XG4gICAgICAgICAgICByZXEgPSByZXEuY2xvbmUoe1xuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHJlcS5oZWFkZXJzLnNldCh0aGlzLl9zZXNzaW9uLnNlc3Npb25IZWFkZXIsIHRoaXMuX3Nlc3Npb24uc2Vzc2lvblRva2VuKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmlkbGVUaW1lclNlcnZpY2UucmVzZXRUaW1lcigpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpLnBpcGUoXG4gICAgICAgICAgICB0YXAoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQuaGVhZGVycy5oYXModGhpcy5fc2Vzc2lvbi5zZXNzaW9uSGVhZGVyKSAmJiAhZXZlbnQuaGVhZGVycy5oYXModGhpcy5fYW5vbnltb3VzU2VydmljZS5qd3RIZWFkZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXNzaW9uLnNldFZlcmlmaWVkVG9rZW4oZXZlbnQuaGVhZGVycy5nZXQodGhpcy5fc2Vzc2lvbi5zZXNzaW9uSGVhZGVyKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3JFdmVudCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yRXZlbnQgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSAmJiBlcnJvckV2ZW50LnN0YXR1cyA9PT0gNDAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoJ0F1dGhlbnRpY2F0aW9uIHRva2VuIGlzIGludmFsaWQuIENsZWFyaW5nIHNlc3Npb24gdG9rZW4nKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2Vzc2lvbi5jbGVhcigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZWRpcmVjdC5yZWRpcmVjdCh0aGlzLl9yZWRpcmVjdC5yZXNvbHZlTG9naW5QYXRoKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvckV2ZW50KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19