angular-auth-oidc-client
Version:
Angular Lib for OpenID Connect & OAuth2
48 lines • 9.14 kB
JavaScript
import { Injectable } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "../auth-state/auth-state.service";
import * as i2 from "../config/config.service";
import * as i3 from "../logging/logger.service";
import * as i4 from "./closest-matching-route.service";
export class AuthInterceptor {
constructor(authStateService, configurationService, loggerService, closestMatchingRouteService) {
this.authStateService = authStateService;
this.configurationService = configurationService;
this.loggerService = loggerService;
this.closestMatchingRouteService = closestMatchingRouteService;
}
intercept(req, next) {
if (!this.configurationService.hasAtLeastOneConfig()) {
return next.handle(req);
}
const allConfigurations = this.configurationService.getAllConfigurations();
const allRoutesConfigured = allConfigurations.map((x) => x.secureRoutes || []);
const allRoutesConfiguredFlat = [].concat(...allRoutesConfigured);
if (allRoutesConfiguredFlat.length === 0) {
this.loggerService.logDebug(allConfigurations[0], `No routes to check configured`);
return next.handle(req);
}
const { matchingConfig, matchingRoute } = this.closestMatchingRouteService.getConfigIdForClosestMatchingRoute(req.url, allConfigurations);
if (!matchingConfig) {
this.loggerService.logDebug(allConfigurations[0], `Did not find any configured route for route ${req.url}`);
return next.handle(req);
}
this.loggerService.logDebug(matchingConfig, `'${req.url}' matches configured route '${matchingRoute}'`);
const token = this.authStateService.getAccessToken(matchingConfig);
if (!token) {
this.loggerService.logDebug(matchingConfig, `Wanted to add token to ${req.url} but found no token: '${token}'`);
return next.handle(req);
}
this.loggerService.logDebug(matchingConfig, `'${req.url}' matches configured route '${matchingRoute}', adding token`);
req = req.clone({
headers: req.headers.set('Authorization', 'Bearer ' + token),
});
return next.handle(req);
}
}
AuthInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AuthInterceptor, deps: [{ token: i1.AuthStateService }, { token: i2.ConfigurationService }, { token: i3.LoggerService }, { token: i4.ClosestMatchingRouteService }], target: i0.ɵɵFactoryTarget.Injectable });
AuthInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AuthInterceptor });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AuthInterceptor, decorators: [{
type: Injectable
}], ctorParameters: function () { return [{ type: i1.AuthStateService }, { type: i2.ConfigurationService }, { type: i3.LoggerService }, { type: i4.ClosestMatchingRouteService }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItYXV0aC1vaWRjLWNsaWVudC9zcmMvbGliL2ludGVyY2VwdG9yL2F1dGguaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBUTNDLE1BQU0sT0FBTyxlQUFlO0lBQzFCLFlBQ21CLGdCQUFrQyxFQUNsQyxvQkFBMEMsRUFDMUMsYUFBNEIsRUFDNUIsMkJBQXdEO1FBSHhELHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixnQ0FBMkIsR0FBM0IsMkJBQTJCLENBQTZCO0lBQ3hFLENBQUM7SUFFSixTQUFTLENBQUMsR0FBcUIsRUFBRSxJQUFpQjtRQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLG1CQUFtQixFQUFFLEVBQUU7WUFDcEQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO1FBRUQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUMzRSxNQUFNLG1CQUFtQixHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMvRSxNQUFNLHVCQUF1QixHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxtQkFBbUIsQ0FBYSxDQUFDO1FBRTlFLElBQUksdUJBQXVCLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN4QyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsRUFBRSwrQkFBK0IsQ0FBQyxDQUFDO1lBRW5GLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtRQUVELE1BQU0sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLGtDQUFrQyxDQUMzRyxHQUFHLENBQUMsR0FBRyxFQUNQLGlCQUFpQixDQUNsQixDQUFDO1FBRUYsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNuQixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsRUFBRSwrQ0FBK0MsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFFNUcsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO1FBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLElBQUksR0FBRyxDQUFDLEdBQUcsK0JBQStCLGFBQWEsR0FBRyxDQUFDLENBQUM7UUFFeEcsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUVuRSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLDBCQUEwQixHQUFHLENBQUMsR0FBRyx5QkFBeUIsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUVoSCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsSUFBSSxHQUFHLENBQUMsR0FBRywrQkFBK0IsYUFBYSxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3RILEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO1lBQ2QsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxTQUFTLEdBQUcsS0FBSyxDQUFDO1NBQzdELENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQixDQUFDOzs0R0FsRFUsZUFBZTtnSEFBZixlQUFlOzJGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXZlbnQsIEh0dHBIYW5kbGVyLCBIdHRwSW50ZXJjZXB0b3IsIEh0dHBSZXF1ZXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQXV0aFN0YXRlU2VydmljZSB9IGZyb20gJy4uL2F1dGgtc3RhdGUvYXV0aC1zdGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9jb25maWcvY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vbG9nZ2luZy9sb2dnZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IENsb3Nlc3RNYXRjaGluZ1JvdXRlU2VydmljZSB9IGZyb20gJy4vY2xvc2VzdC1tYXRjaGluZy1yb3V0ZS5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEF1dGhJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGF1dGhTdGF0ZVNlcnZpY2U6IEF1dGhTdGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ3VyYXRpb25TZXJ2aWNlOiBDb25maWd1cmF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyU2VydmljZTogTG9nZ2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2xvc2VzdE1hdGNoaW5nUm91dGVTZXJ2aWNlOiBDbG9zZXN0TWF0Y2hpbmdSb3V0ZVNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIGludGVyY2VwdChyZXE6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xyXG4gICAgaWYgKCF0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLmhhc0F0TGVhc3RPbmVDb25maWcoKSkge1xyXG4gICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBhbGxDb25maWd1cmF0aW9ucyA9IHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UuZ2V0QWxsQ29uZmlndXJhdGlvbnMoKTtcclxuICAgIGNvbnN0IGFsbFJvdXRlc0NvbmZpZ3VyZWQgPSBhbGxDb25maWd1cmF0aW9ucy5tYXAoKHgpID0+IHguc2VjdXJlUm91dGVzIHx8IFtdKTtcclxuICAgIGNvbnN0IGFsbFJvdXRlc0NvbmZpZ3VyZWRGbGF0ID0gW10uY29uY2F0KC4uLmFsbFJvdXRlc0NvbmZpZ3VyZWQpIGFzIHN0cmluZ1tdO1xyXG5cclxuICAgIGlmIChhbGxSb3V0ZXNDb25maWd1cmVkRmxhdC5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKGFsbENvbmZpZ3VyYXRpb25zWzBdLCBgTm8gcm91dGVzIHRvIGNoZWNrIGNvbmZpZ3VyZWRgKTtcclxuXHJcbiAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHsgbWF0Y2hpbmdDb25maWcsIG1hdGNoaW5nUm91dGUgfSA9IHRoaXMuY2xvc2VzdE1hdGNoaW5nUm91dGVTZXJ2aWNlLmdldENvbmZpZ0lkRm9yQ2xvc2VzdE1hdGNoaW5nUm91dGUoXHJcbiAgICAgIHJlcS51cmwsXHJcbiAgICAgIGFsbENvbmZpZ3VyYXRpb25zXHJcbiAgICApO1xyXG5cclxuICAgIGlmICghbWF0Y2hpbmdDb25maWcpIHtcclxuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKGFsbENvbmZpZ3VyYXRpb25zWzBdLCBgRGlkIG5vdCBmaW5kIGFueSBjb25maWd1cmVkIHJvdXRlIGZvciByb3V0ZSAke3JlcS51cmx9YCk7XHJcblxyXG4gICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRGVidWcobWF0Y2hpbmdDb25maWcsIGAnJHtyZXEudXJsfScgbWF0Y2hlcyBjb25maWd1cmVkIHJvdXRlICcke21hdGNoaW5nUm91dGV9J2ApO1xyXG5cclxuICAgIGNvbnN0IHRva2VuID0gdGhpcy5hdXRoU3RhdGVTZXJ2aWNlLmdldEFjY2Vzc1Rva2VuKG1hdGNoaW5nQ29uZmlnKTtcclxuXHJcbiAgICBpZiAoIXRva2VuKSB7XHJcbiAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dEZWJ1ZyhtYXRjaGluZ0NvbmZpZywgYFdhbnRlZCB0byBhZGQgdG9rZW4gdG8gJHtyZXEudXJsfSBidXQgZm91bmQgbm8gdG9rZW46ICcke3Rva2VufSdgKTtcclxuXHJcbiAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dEZWJ1ZyhtYXRjaGluZ0NvbmZpZywgYCcke3JlcS51cmx9JyBtYXRjaGVzIGNvbmZpZ3VyZWQgcm91dGUgJyR7bWF0Y2hpbmdSb3V0ZX0nLCBhZGRpbmcgdG9rZW5gKTtcclxuICAgIHJlcSA9IHJlcS5jbG9uZSh7XHJcbiAgICAgIGhlYWRlcnM6IHJlcS5oZWFkZXJzLnNldCgnQXV0aG9yaXphdGlvbicsICdCZWFyZXIgJyArIHRva2VuKSxcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpO1xyXG4gIH1cclxufVxyXG4iXX0=