diff --git a/support-portal-frontend/package-lock.json b/support-portal-frontend/package-lock.json index cae8ce4..5f49008 100644 --- a/support-portal-frontend/package-lock.json +++ b/support-portal-frontend/package-lock.json @@ -371,6 +371,14 @@ "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", "dev": true }, + "@auth0/angular-jwt": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@auth0/angular-jwt/-/angular-jwt-5.0.2.tgz", + "integrity": "sha512-rSamC9mu+gUxoR86AXcIo+KD7xRIro+/iu1F2Ld85YAZEVKlpB5vYG+g0yGaEOqjtQWP/i0H6fi6XMGPVHSYYQ==", + "requires": { + "tslib": "^2.0.0" + } + }, "@babel/code-frame": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", diff --git a/support-portal-frontend/package.json b/support-portal-frontend/package.json index 9a9948e..33dd458 100644 --- a/support-portal-frontend/package.json +++ b/support-portal-frontend/package.json @@ -18,6 +18,7 @@ "@angular/platform-browser": "~12.2.0", "@angular/platform-browser-dynamic": "~12.2.0", "@angular/router": "~12.2.0", + "@auth0/angular-jwt": "^5.0.2", "rxjs": "~6.6.0", "tslib": "^2.3.0", "zone.js": "~0.11.4" diff --git a/support-portal-frontend/src/app/service/authentication.service.ts b/support-portal-frontend/src/app/service/authentication.service.ts index 07346c6..75e2e8a 100644 --- a/support-portal-frontend/src/app/service/authentication.service.ts +++ b/support-portal-frontend/src/app/service/authentication.service.ts @@ -4,6 +4,7 @@ import {HttpClient, HttpErrorResponse, HttpResponse} from "@angular/common/http" import {UserLogin} from "../dto/user-login"; import {Observable} from "rxjs"; import {User} from "../model/user"; +import {JwtHelperService} from "@auth0/angular-jwt"; const USER_STORAGE_KEY = "user"; const JWT_TOKEN_STORAGE_KEY = "jwt-token"; @@ -18,6 +19,9 @@ export class AuthenticationService { private loggedInUser: string | null; private storage = localStorage; + //first install this module: `npm install @auth0/angular-jwt` + private jwtHelper: JwtHelperService = new JwtHelperService(); + constructor(private httpClient: HttpClient) { } @@ -61,4 +65,19 @@ export class AuthenticationService { return this.token; } + public isLoggedIn(): boolean { + this.loadToken(); + if (this.token != null && this.token !== '') { + let subject = this.jwtHelper.decodeToken(this.token).sub; + if (subject != null || '') { + if (!this.jwtHelper.isTokenExpired(this.token!)) { + this.loggedInUser = subject; + return true; + } + } + } + this.logout() + return false; + } + }