Core - Add the http interceptor (#5486)

* Add the interceptor

* Remove index
This commit is contained in:
Maurizio Vitale 2020-02-17 16:22:10 +00:00 committed by GitHub
parent ffc17157a4
commit 72a942dec8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 18 additions and 30 deletions

View File

@ -23,7 +23,7 @@ import { ChartsModule } from 'ng2-charts';
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http'; import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
import { BrowserAnimationsModule, NoopAnimationsModule } from '@angular/platform-browser/animations'; import { BrowserAnimationsModule, NoopAnimationsModule } from '@angular/platform-browser/animations';
import { AppConfigService, TRANSLATION_PROVIDER, DebugAppConfigService, CoreModule, CoreAutomationService } from '@alfresco/adf-core'; import { AppConfigService, TRANSLATION_PROVIDER, DebugAppConfigService, CoreModule, CoreAutomationService, AuthBearerInterceptor } from '@alfresco/adf-core';
import { ExtensionsModule } from '@alfresco/adf-extensions'; import { ExtensionsModule } from '@alfresco/adf-extensions';
import { AppComponent } from './app.component'; import { AppComponent } from './app.component';
import { MaterialModule } from './material.module'; import { MaterialModule } from './material.module';
@ -61,7 +61,6 @@ import { MonacoEditorModule } from 'ngx-monaco-editor';
import { ContentModule } from '@alfresco/adf-content-services'; import { ContentModule } from '@alfresco/adf-content-services';
import { InsightsModule } from '@alfresco/adf-insights'; import { InsightsModule } from '@alfresco/adf-insights';
import { ProcessModule } from '@alfresco/adf-process-services'; import { ProcessModule } from '@alfresco/adf-process-services';
import { AuthBearerInterceptor } from './services';
import { AppExtensionsModule } from './app-extension.module'; import { AppExtensionsModule } from './app-extension.module';
import { TreeViewSampleComponent } from './components/tree-view/tree-view-sample.component'; import { TreeViewSampleComponent } from './components/tree-view/tree-view-sample.component';
import { CloudLayoutComponent } from './components/cloud/cloud-layout.component'; import { CloudLayoutComponent } from './components/cloud/cloud-layout.component';

View File

@ -1,18 +0,0 @@
/*!
* @license
* Copyright 2019 Alfresco Software, Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
export * from './auth-bearer.interceptor';

View File

@ -15,13 +15,13 @@
* limitations under the License. * limitations under the License.
*/ */
import { throwError as observableThrowError, Observable } from 'rxjs'; import { throwError as observableThrowError, Observable, of } from 'rxjs';
import { Injectable, Injector } from '@angular/core'; import { Injectable, Injector } from '@angular/core';
import { import {
HttpHandler, HttpInterceptor, HttpRequest, HttpHandler, HttpInterceptor, HttpRequest,
HttpSentEvent, HttpHeaderResponse, HttpProgressEvent, HttpResponse, HttpUserEvent HttpSentEvent, HttpHeaderResponse, HttpProgressEvent, HttpResponse, HttpUserEvent, HttpHeaders
} from '@angular/common/http'; } from '@angular/common/http';
import { AuthenticationService } from '@alfresco/adf-core'; import { AuthenticationService } from './authentication.service';
import { catchError, mergeMap } from 'rxjs/operators'; import { catchError, mergeMap } from 'rxjs/operators';
@Injectable() @Injectable()
@ -31,7 +31,7 @@ export class AuthBearerInterceptor implements HttpInterceptor {
constructor(private injector: Injector) { } constructor(private injector: Injector) { }
private loadExcludedUrlsRegex(): void { private loadExcludedUrlsRegex() {
const excludedUrls: string[] = this.authService.getBearerExcludedUrls(); const excludedUrls: string[] = this.authService.getBearerExcludedUrls();
this.excludedUrlsRegex = excludedUrls.map((urlPattern) => new RegExp(urlPattern, 'gi')) || []; this.excludedUrlsRegex = excludedUrls.map((urlPattern) => new RegExp(urlPattern, 'gi')) || [];
@ -64,14 +64,20 @@ export class AuthBearerInterceptor implements HttpInterceptor {
return this.authService.addTokenToHeader(req.headers) return this.authService.addTokenToHeader(req.headers)
.pipe( .pipe(
mergeMap((headersWithBearer) => { mergeMap((headersWithBearer) => {
const kcReq = req.clone({ headers: headersWithBearer }); const headerWithContentType = this.appendJsonContentType(headersWithBearer);
return next.handle(kcReq) const kcReq = req.clone({ headers: headerWithContentType});
.pipe( return next.handle(kcReq)
catchError((error) => { .pipe(
catchError((error) => {
return observableThrowError(error); return observableThrowError(error);
}) })
); );
}) })
); );
} }
private appendJsonContentType(headers: HttpHeaders): HttpHeaders {
return headers.set('Content-Type', 'application/json;charset=UTF-8');
}
} }

View File

@ -61,3 +61,4 @@ export * from './ecm-user.service';
export * from './identity-user.service'; export * from './identity-user.service';
export * from './identity-group.service'; export * from './identity-group.service';
export * from './identity-role.service'; export * from './identity-role.service';
export * from './auth-bearer.interceptor';