Adding an authorization interceptor

This commit is contained in:
Zoe Roux 2020-03-30 07:36:40 +02:00
parent 26e174f3cc
commit 46158490f0
2 changed files with 36 additions and 2 deletions

View File

@ -1,4 +1,4 @@
import { HttpClientModule } from '@angular/common/http'; import {HTTP_INTERCEPTORS, HttpClientModule} from '@angular/common/http';
import {APP_INITIALIZER, ChangeDetectorRef, NgModule} from '@angular/core'; import {APP_INITIALIZER, ChangeDetectorRef, NgModule} from '@angular/core';
import { MatButtonModule } from '@angular/material/button'; import { MatButtonModule } from '@angular/material/button';
import { MatCardModule } from '@angular/material/card'; import { MatCardModule } from '@angular/material/card';
@ -44,6 +44,7 @@ import {MatDialogModule} from '@angular/material/dialog';
import {FallbackDirective} from "./misc/fallback.directive"; import {FallbackDirective} from "./misc/fallback.directive";
import {AuthGuard} from "./misc/guards/authenticated-guard.service"; import {AuthGuard} from "./misc/guards/authenticated-guard.service";
import { AutologinComponent } from './autologin/autologin.component'; import { AutologinComponent } from './autologin/autologin.component';
import {AuthorizerInterceptor} from "./misc/authorizer-interceptor.service";
export function loadConfig(oidcConfigService: OidcConfigService) export function loadConfig(oidcConfigService: OidcConfigService)
{ {
@ -105,7 +106,12 @@ export function loadConfig(oidcConfigService: OidcConfigService)
deps: [OidcConfigService], deps: [OidcConfigService],
multi: true multi: true
}, },
AuthGuard AuthGuard,
{
provide: HTTP_INTERCEPTORS,
useClass: AuthorizerInterceptor,
multi: true
}
], ],
bootstrap: [AppComponent] bootstrap: [AppComponent]
}) })

View File

@ -0,0 +1,28 @@
import {Injectable, Injector} from '@angular/core';
import {
HttpRequest,
HttpHandler,
HttpEvent,
HttpInterceptor
} from '@angular/common/http';
import { Observable } from 'rxjs';
import {OidcSecurityService} from "angular-auth-oidc-client";
@Injectable()
export class AuthorizerInterceptor implements HttpInterceptor
{
private oidcSecurity: OidcSecurityService;
constructor(private injector: Injector) {}
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>
{
if (this.oidcSecurity === undefined)
this.oidcSecurity = this.injector.get(OidcSecurityService);
let token = this.oidcSecurity.getToken();
if (token)
request = request.clone({setHeaders: {Authorization: "Bearer " + token}});
return next.handle(request);
}
}