diff --git a/Core/Core/ClientApp/src/app/app.module.ts b/Core/Core/ClientApp/src/app/app.module.ts index 739979d242a97a96a8da35e55e308d4955e1b0f2..e8982412dbde6c07060d5acd4765d4011f0065c1 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 0000000000000000000000000000000000000000..fb5daaa65bc5e50de2aa96f9148eb7e5e2b61066 --- /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 064f0517b3427c01cd19da687163269426eef9aa..e501cb913a3f5d313d2890e35b75cb1293ddfe2f 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 4a9b543df9ce44d2e46b7389d066c2b0aefd7565..cec102330e2d239723d1cffdcc9963e9083631d7 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>