Browse Source

Merge pull request #5430 from abpframework/feat/5428

feat: add getHeaders method to ApiInterceptor
pull/5434/head
Bunyamin Coskuner 6 years ago
committed by GitHub
parent
commit
d6dc9f11fa
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 26
      npm/ng-packs/packages/core/src/lib/interceptors/api.interceptor.ts

26
npm/ng-packs/packages/core/src/lib/interceptors/api.interceptor.ts

@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';
import { HttpInterceptor, HttpHandler, HttpRequest, HttpHeaders } from '@angular/common/http';
import { OAuthService } from 'angular-oauth2-oidc';
import { Store } from '@ngxs/store';
import { SessionState } from '../states';
@ -13,29 +13,33 @@ export class ApiInterceptor implements HttpInterceptor {
intercept(request: HttpRequest<any>, next: HttpHandler) {
this.store.dispatch(new StartLoader(request));
return next
.handle(
request.clone({
setHeaders: this.getAdditionalHeaders(request.headers),
}),
)
.pipe(finalize(() => this.store.dispatch(new StopLoader(request))));
}
getAdditionalHeaders(existingHeaders?: HttpHeaders) {
const headers = {} as any;
const token = this.oAuthService.getAccessToken();
if (!request.headers.has('Authorization') && token) {
if (!existingHeaders?.has('Authorization') && token) {
headers['Authorization'] = `Bearer ${token}`;
}
const lang = this.store.selectSnapshot(SessionState.getLanguage);
if (!request.headers.has('Accept-Language') && lang) {
if (!existingHeaders?.has('Accept-Language') && lang) {
headers['Accept-Language'] = lang;
}
const tenant = this.store.selectSnapshot(SessionState.getTenant);
if (!request.headers.has('__tenant') && tenant) {
if (!existingHeaders?.has('__tenant') && tenant) {
headers['__tenant'] = tenant.id;
}
return next
.handle(
request.clone({
setHeaders: headers,
}),
)
.pipe(finalize(() => this.store.dispatch(new StopLoader(request))));
return headers;
}
}

Loading…
Cancel
Save