Skip to content

Instantly share code, notes, and snippets.

@lydemann
Created December 28, 2020 18:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lydemann/c216b449b3875ff77e8c0dcddba37f43 to your computer and use it in GitHub Desktop.
Save lydemann/c216b449b3875ff77e8c0dcddba37f43 to your computer and use it in GitHub Desktop.
set-token.interceptor.ts
@Injectable({ providedIn: 'root' })
export class SetTokenInterceptor implements HttpInterceptor {
constructor(private userService: UserService) {}
intercept(
req: HttpRequest<any>,
next: HttpHandler
): Observable<HttpEvent<any>> {
if (!this.userService.currentUser$.value) {
return next.handle(req);
}
return this.userService.currentUser$.pipe(
first(),
switchMap(user => {
return from(user?.getIdToken() || '');
}),
exhaustMap(token => {
const tenantId = auth().tenantId;
let headers = tenantId
? req.headers.append('Schoolid', tenantId)
: req.headers;
headers = headers.append('Authorization', token);
const authReq = req.clone({ headers });
return next.handle(authReq);
})
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment