UNPKG

angular-auth-oidc-client

Version:
67 lines 12.2 kB
import { Injectable, inject } from '@angular/core'; import { AuthStateService } from '../auth-state/auth-state.service'; import { ConfigurationService } from '../config/config.service'; import { LoggerService } from '../logging/logger.service'; import { flattenArray } from '../utils/collections/collections.helper'; import { ClosestMatchingRouteService } from './closest-matching-route.service'; import * as i0 from "@angular/core"; export class AuthInterceptor { constructor() { this.authStateService = inject(AuthStateService); this.configurationService = inject(ConfigurationService); this.loggerService = inject(LoggerService); this.closestMatchingRouteService = inject(ClosestMatchingRouteService); } intercept(req, next) { return interceptRequest(req, next.handle, { configurationService: this.configurationService, authStateService: this.authStateService, closestMatchingRouteService: this.closestMatchingRouteService, loggerService: this.loggerService, }); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AuthInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AuthInterceptor }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AuthInterceptor, decorators: [{ type: Injectable }] }); export function authInterceptor() { return (req, next) => { return interceptRequest(req, next, { configurationService: inject(ConfigurationService), authStateService: inject(AuthStateService), closestMatchingRouteService: inject(ClosestMatchingRouteService), loggerService: inject(LoggerService), }); }; } function interceptRequest(req, next, deps) { if (!deps.configurationService.hasAtLeastOneConfig()) { return next(req); } const allConfigurations = deps.configurationService.getAllConfigurations(); const allRoutesConfigured = allConfigurations.map((x) => x.secureRoutes || []); const allRoutesConfiguredFlat = flattenArray(allRoutesConfigured); if (allRoutesConfiguredFlat.length === 0) { deps.loggerService.logDebug(allConfigurations[0], `No routes to check configured`); return next(req); } const { matchingConfig, matchingRoute } = deps.closestMatchingRouteService.getConfigIdForClosestMatchingRoute(req.url, allConfigurations); if (!matchingConfig) { deps.loggerService.logDebug(allConfigurations[0], `Did not find any configured route for route ${req.url}`); return next(req); } deps.loggerService.logDebug(matchingConfig, `'${req.url}' matches configured route '${matchingRoute}'`); const token = deps.authStateService.getAccessToken(matchingConfig); if (!token) { deps.loggerService.logDebug(matchingConfig, `Wanted to add token to ${req.url} but found no token: '${token}'`); return next(req); } deps.loggerService.logDebug(matchingConfig, `'${req.url}' matches configured route '${matchingRoute}', adding token`); req = req.clone({ headers: req.headers.set('Authorization', 'Bearer ' + token), }); return next(req); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItYXV0aC1vaWRjLWNsaWVudC9zcmMvbGliL2ludGVyY2VwdG9yL2F1dGguaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDcEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFHL0UsTUFBTSxPQUFPLGVBQWU7SUFENUI7UUFFbUIscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFNUMseUJBQW9CLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFcEQsa0JBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFdEMsZ0NBQTJCLEdBQUcsTUFBTSxDQUNuRCwyQkFBMkIsQ0FDNUIsQ0FBQztLQWFIO0lBWEMsU0FBUyxDQUNQLEdBQXFCLEVBQ3JCLElBQWlCO1FBRWpCLE9BQU8sZ0JBQWdCLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDeEMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLG9CQUFvQjtZQUMvQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1lBQ3ZDLDJCQUEyQixFQUFFLElBQUksQ0FBQywyQkFBMkI7WUFDN0QsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1NBQ2xDLENBQUMs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O0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEh0dHBFdmVudCxcclxuICBIdHRwSGFuZGxlcixcclxuICBIdHRwSGFuZGxlckZuLFxyXG4gIEh0dHBJbnRlcmNlcHRvcixcclxuICBIdHRwSW50ZXJjZXB0b3JGbixcclxuICBIdHRwUmVxdWVzdCxcclxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEF1dGhTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9hdXRoLXN0YXRlL2F1dGgtc3RhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vY29uZmlnL2NvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uL2xvZ2dpbmcvbG9nZ2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBmbGF0dGVuQXJyYXkgfSBmcm9tICcuLi91dGlscy9jb2xsZWN0aW9ucy9jb2xsZWN0aW9ucy5oZWxwZXInO1xyXG5pbXBvcnQgeyBDbG9zZXN0TWF0Y2hpbmdSb3V0ZVNlcnZpY2UgfSBmcm9tICcuL2Nsb3Nlc3QtbWF0Y2hpbmctcm91dGUuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBdXRoSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgYXV0aFN0YXRlU2VydmljZSA9IGluamVjdChBdXRoU3RhdGVTZXJ2aWNlKTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWd1cmF0aW9uU2VydmljZSA9IGluamVjdChDb25maWd1cmF0aW9uU2VydmljZSk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyU2VydmljZSA9IGluamVjdChMb2dnZXJTZXJ2aWNlKTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBjbG9zZXN0TWF0Y2hpbmdSb3V0ZVNlcnZpY2UgPSBpbmplY3QoXHJcbiAgICBDbG9zZXN0TWF0Y2hpbmdSb3V0ZVNlcnZpY2VcclxuICApO1xyXG5cclxuICBpbnRlcmNlcHQoXHJcbiAgICByZXE6IEh0dHBSZXF1ZXN0PGFueT4sXHJcbiAgICBuZXh0OiBIdHRwSGFuZGxlclxyXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcclxuICAgIHJldHVybiBpbnRlcmNlcHRSZXF1ZXN0KHJlcSwgbmV4dC5oYW5kbGUsIHtcclxuICAgICAgY29uZmlndXJhdGlvblNlcnZpY2U6IHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UsXHJcbiAgICAgIGF1dGhTdGF0ZVNlcnZpY2U6IHRoaXMuYXV0aFN0YXRlU2VydmljZSxcclxuICAgICAgY2xvc2VzdE1hdGNoaW5nUm91dGVTZXJ2aWNlOiB0aGlzLmNsb3Nlc3RNYXRjaGluZ1JvdXRlU2VydmljZSxcclxuICAgICAgbG9nZ2VyU2VydmljZTogdGhpcy5sb2dnZXJTZXJ2aWNlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYXV0aEludGVyY2VwdG9yKCk6IEh0dHBJbnRlcmNlcHRvckZuIHtcclxuICByZXR1cm4gKHJlcSwgbmV4dCkgPT4ge1xyXG4gICAgcmV0dXJuIGludGVyY2VwdFJlcXVlc3QocmVxLCBuZXh0LCB7XHJcbiAgICAgIGNvbmZpZ3VyYXRpb25TZXJ2aWNlOiBpbmplY3QoQ29uZmlndXJhdGlvblNlcnZpY2UpLFxyXG4gICAgICBhdXRoU3RhdGVTZXJ2aWNlOiBpbmplY3QoQXV0aFN0YXRlU2VydmljZSksXHJcbiAgICAgIGNsb3Nlc3RNYXRjaGluZ1JvdXRlU2VydmljZTogaW5qZWN0KENsb3Nlc3RNYXRjaGluZ1JvdXRlU2VydmljZSksXHJcbiAgICAgIGxvZ2dlclNlcnZpY2U6IGluamVjdChMb2dnZXJTZXJ2aWNlKSxcclxuICAgIH0pO1xyXG4gIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGludGVyY2VwdFJlcXVlc3QoXHJcbiAgcmVxOiBIdHRwUmVxdWVzdDxhbnk+LFxyXG4gIG5leHQ6IEh0dHBIYW5kbGVyRm4sXHJcbiAgZGVwczoge1xyXG4gICAgYXV0aFN0YXRlU2VydmljZTogQXV0aFN0YXRlU2VydmljZTtcclxuICAgIGNvbmZpZ3VyYXRpb25TZXJ2aWNlOiBDb25maWd1cmF0aW9uU2VydmljZTtcclxuICAgIGxvZ2dlclNlcnZpY2U6IExvZ2dlclNlcnZpY2U7XHJcbiAgICBjbG9zZXN0TWF0Y2hpbmdSb3V0ZVNlcnZpY2U6IENsb3Nlc3RNYXRjaGluZ1JvdXRlU2VydmljZTtcclxuICB9XHJcbik6IE9ic2VydmFibGU8SHR0cEV2ZW50PHVua25vd24+PiB7XHJcbiAgaWYgKCFkZXBzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLmhhc0F0TGVhc3RPbmVDb25maWcoKSkge1xyXG4gICAgcmV0dXJuIG5leHQocmVxKTtcclxuICB9XHJcblxyXG4gIGNvbnN0IGFsbENvbmZpZ3VyYXRpb25zID0gZGVwcy5jb25maWd1cmF0aW9uU2VydmljZS5nZXRBbGxDb25maWd1cmF0aW9ucygpO1xyXG4gIGNvbnN0IGFsbFJvdXRlc0NvbmZpZ3VyZWQgPSBhbGxDb25maWd1cmF0aW9ucy5tYXAoXHJcbiAgICAoeCkgPT4geC5zZWN1cmVSb3V0ZXMgfHwgW11cclxuICApO1xyXG4gIGNvbnN0IGFsbFJvdXRlc0NvbmZpZ3VyZWRGbGF0ID0gZmxhdHRlbkFycmF5KGFsbFJvdXRlc0NvbmZpZ3VyZWQpO1xyXG5cclxuICBpZiAoYWxsUm91dGVzQ29uZmlndXJlZEZsYXQubGVuZ3RoID09PSAwKSB7XHJcbiAgICBkZXBzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoXHJcbiAgICAgIGFsbENvbmZpZ3VyYXRpb25zWzBdLFxyXG4gICAgICBgTm8gcm91dGVzIHRvIGNoZWNrIGNvbmZpZ3VyZWRgXHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiBuZXh0KHJlcSk7XHJcbiAgfVxyXG5cclxuICBjb25zdCB7IG1hdGNoaW5nQ29uZmlnLCBtYXRjaGluZ1JvdXRlIH0gPVxyXG4gICAgZGVwcy5jbG9zZXN0TWF0Y2hpbmdSb3V0ZVNlcnZpY2UuZ2V0Q29uZmlnSWRGb3JDbG9zZXN0TWF0Y2hpbmdSb3V0ZShcclxuICAgICAgcmVxLnVybCxcclxuICAgICAgYWxsQ29uZmlndXJhdGlvbnNcclxuICAgICk7XHJcblxyXG4gIGlmICghbWF0Y2hpbmdDb25maWcpIHtcclxuICAgIGRlcHMubG9nZ2VyU2VydmljZS5sb2dEZWJ1ZyhcclxuICAgICAgYWxsQ29uZmlndXJhdGlvbnNbMF0sXHJcbiAgICAgIGBEaWQgbm90IGZpbmQgYW55IGNvbmZpZ3VyZWQgcm91dGUgZm9yIHJvdXRlICR7cmVxLnVybH1gXHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiBuZXh0KHJlcSk7XHJcbiAgfVxyXG5cclxuICBkZXBzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoXHJcbiAgICBtYXRjaGluZ0NvbmZpZyxcclxuICAgIGAnJHtyZXEudXJsfScgbWF0Y2hlcyBjb25maWd1cmVkIHJvdXRlICcke21hdGNoaW5nUm91dGV9J2BcclxuICApO1xyXG4gIGNvbnN0IHRva2VuID0gZGVwcy5hdXRoU3RhdGVTZXJ2aWNlLmdldEFjY2Vzc1Rva2VuKG1hdGNoaW5nQ29uZmlnKTtcclxuXHJcbiAgaWYgKCF0b2tlbikge1xyXG4gICAgZGVwcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKFxyXG4gICAgICBtYXRjaGluZ0NvbmZpZyxcclxuICAgICAgYFdhbnRlZCB0byBhZGQgdG9rZW4gdG8gJHtyZXEudXJsfSBidXQgZm91bmQgbm8gdG9rZW46ICcke3Rva2VufSdgXHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiBuZXh0KHJlcSk7XHJcbiAgfVxyXG5cclxuICBkZXBzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcoXHJcbiAgICBtYXRjaGluZ0NvbmZpZyxcclxuICAgIGAnJHtyZXEudXJsfScgbWF0Y2hlcyBjb25maWd1cmVkIHJvdXRlICcke21hdGNoaW5nUm91dGV9JywgYWRkaW5nIHRva2VuYFxyXG4gICk7XHJcbiAgcmVxID0gcmVxLmNsb25lKHtcclxuICAgIGhlYWRlcnM6IHJlcS5oZWFkZXJzLnNldCgnQXV0aG9yaXphdGlvbicsICdCZWFyZXIgJyArIHRva2VuKSxcclxuICB9KTtcclxuXHJcbiAgcmV0dXJuIG5leHQocmVxKTtcclxufVxyXG4iXX0=