I am using the Azure AD adal library to do authentication. There is a call to aquire a token that returns an observable. How can this observable be added into the intercept?
When you need to return something from Observable
, you can use map
instead of subscribe
:
return this.authAzureService.getAccessToken()
.map(token => request = this.getRequestWithHeaders(request, token));
}
request = request.clone({
setHeaders: {
Authorization: `Bearer ${token}`
}
});
return next.handle(request);
Thanks to @Commecial Suicide I found the solution, which is to use a flatMap. Here is the code that worked:
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
let requestHandler = this.authAzureService.getAccessToken()
.flatMap(token => {
request = this.getRequestWithHeaders(request, token);
return next.handle(request);
});
return requestHandler;
}