From 6df974d1f419589234983791cccbd588af4dcf3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Radek=20Pu=C5=A1?= <pusradek@fit.cvut.cz> Date: Fri, 25 Oct 2019 04:05:01 +0200 Subject: [PATCH] jwt interceptor --- Core/Core/ClientApp/src/app/app.module.ts | 6 +++-- .../src/app/helpers/jwt.interceptor.ts | 23 +++++++++++++++++++ .../ClientApp/src/app/login/login.service.ts | 1 - Core/Core/Core.csproj | 2 ++ 4 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 Core/Core/ClientApp/src/app/helpers/jwt.interceptor.ts diff --git a/Core/Core/ClientApp/src/app/app.module.ts b/Core/Core/ClientApp/src/app/app.module.ts index 739979d..e898241 100644 --- a/Core/Core/ClientApp/src/app/app.module.ts +++ b/Core/Core/ClientApp/src/app/app.module.ts @@ -1,7 +1,7 @@ import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { FormsModule } from '@angular/forms'; -import { HttpClientModule } from '@angular/common/http'; +import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http'; import { RouterModule } from '@angular/router'; import { ChartModule } from 'angular-highcharts'; @@ -16,6 +16,7 @@ import { HomeComponent } from './home/home.component'; import { RegistrationComponent } from './registration/registration.component'; import { AuthGuard } from './auth.guard'; import { RegistrationService } from './registration/registration.service'; +import { JwtInterceptor } from './helpers/jwt.interceptor'; @NgModule({ declarations: [ @@ -43,7 +44,8 @@ import { RegistrationService } from './registration/registration.service'; ImportService, LoginService, AuthGuard, - RegistrationService + RegistrationService, + { provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true } ], bootstrap: [AppComponent] }) diff --git a/Core/Core/ClientApp/src/app/helpers/jwt.interceptor.ts b/Core/Core/ClientApp/src/app/helpers/jwt.interceptor.ts new file mode 100644 index 0000000..fb5daaa --- /dev/null +++ b/Core/Core/ClientApp/src/app/helpers/jwt.interceptor.ts @@ -0,0 +1,23 @@ +import { Injectable } from "@angular/core"; +import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from "@angular/common/http"; +import { LoginService } from "../login/login.service"; +import { Observable } from "rxjs"; + +@Injectable({ + providedIn: 'root' +}) + +export class JwtInterceptor implements HttpInterceptor { + + constructor(private LoginService: LoginService) { } + + intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> { + let currentuser = this.LoginService.IsLoggedIn; + let token = localStorage.getItem('jwt'); + + if (currentuser && token !== undefined) + request = request.clone({ setHeaders: { Authorization: `Bearer ${token}`} }); + + return next.handle(request); + } +} diff --git a/Core/Core/ClientApp/src/app/login/login.service.ts b/Core/Core/ClientApp/src/app/login/login.service.ts index 064f051..e501cb9 100644 --- a/Core/Core/ClientApp/src/app/login/login.service.ts +++ b/Core/Core/ClientApp/src/app/login/login.service.ts @@ -3,7 +3,6 @@ import { HttpClient } from '@angular/common/http'; import { Router } from '@angular/router'; import { BehaviorSubject, Observable } from 'rxjs'; import { map } from 'rxjs/operators'; -import { error } from 'util'; @Injectable({ providedIn: 'root' diff --git a/Core/Core/Core.csproj b/Core/Core/Core.csproj index 4a9b543..cec1023 100644 --- a/Core/Core/Core.csproj +++ b/Core/Core/Core.csproj @@ -38,12 +38,14 @@ <ItemGroup> <None Remove="ClientApp\src\app\app.routing.module.ts" /> + <None Remove="ClientApp\src\app\helpers\jwt.interceptor.ts" /> <None Remove="ClientApp\src\app\import\import.service.ts" /> <None Remove="ClientApp\src\app\login\login.service.ts" /> <None Remove="ClientApp\src\app\registration\registration.service.ts" /> </ItemGroup> <ItemGroup> + <TypeScriptCompile Include="ClientApp\src\app\helpers\jwt.interceptor.ts" /> <TypeScriptCompile Include="ClientApp\src\app\import\import.service.ts" /> <TypeScriptCompile Include="ClientApp\src\app\login\login.service.ts"> <SubType>Code</SubType> -- GitLab