diff --git a/package-lock.json b/package-lock.json index dab09a0..1308686 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42577,6 +42577,7 @@ "set-immediate-shim": "~1.0.1" } }, +<<<<<<< HEAD "jwa": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", @@ -42610,6 +42611,12 @@ "jwa": "^2.0.0", "safe-buffer": "^5.0.1" } +======= + "jwt-decode": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", + "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" +>>>>>>> cfc62c68d51bd7d7b66b0dc0950899c63d920935 }, "karma": { "version": "6.3.19", diff --git a/package.json b/package.json index 71276b0..cbd9486 100644 --- a/package.json +++ b/package.json @@ -58,6 +58,7 @@ "html2pdf.js": "^0.10.1", "intl": "1.2.5", "ionicons": "2.0.1", + "jwt-decode": "^3.1.2", "leaflet": "1.2.0", "nebular-icons": "1.1.0", "ng2-ckeditor": "~1.2.9", diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 8d93c93..8f9fee7 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -12,9 +12,14 @@ import { LoginComponent } from '../app/pages/auth/login/login.component'; import { AuthGuard } from './pages/_guard/auth.guard'; import { ForgotPasswordComponent } from './pages/auth/forgot-password/forgot-password.component'; import { ResetPasswordComponent } from './pages/auth/reset-password/reset-password.component'; +import { Injectable } from '@angular/core'; +import jwt_decode from 'jwt-decode'; -const token = localStorage.getItem('user_token'); + + +const token = localStorage.getItem('user_token'); + console.log(token) let param; if(token != '' && token != undefined && token != null){ @@ -30,7 +35,7 @@ export const routes: Routes = [ }, { path: 'pages', - canActivateChild:[AuthGuard], + canActivate:[AuthGuard], loadChildren: () => import('./pages/pages.module') .then(m => m.PagesModule), }, diff --git a/src/app/pages/_guard/auth.guard.ts b/src/app/pages/_guard/auth.guard.ts index 4c10514..90f6639 100644 --- a/src/app/pages/_guard/auth.guard.ts +++ b/src/app/pages/_guard/auth.guard.ts @@ -1,94 +1,93 @@ import { Injectable } from '@angular/core'; import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, CanActivateChild } from '@angular/router'; import { Observable , of } from 'rxjs'; +import jwt_decode from 'jwt-decode'; // import { CognitoService } from '../AwsService/cognito.service'; @Injectable() export class AuthGuard implements CanActivate, CanActivateChild { token:any =[]; - constructor(private router: Router) { } + constructor(private router: Router) { this.token = localStorage.getItem('user_token'); } + + // setToken(token: string): void { + // localStorage.setItem(this.token, token); + // } + + // getToken(): string | null { + // return localStorage.getItem(this.token); + // } + + clearSession(): void { + localStorage.removeItem(this.token); + } + + isTokenExpired(): boolean { + this.token = localStorage.getItem('user_token'); + const token = this.token; + if (token) { + const decoded: any = jwt_decode(token); + const expirationDate = new Date(0); + expirationDate.setUTCSeconds(decoded.exp); + // Get the current datetime + const currentDatetime = new Date(); + const fiveMinutesBeforeExpiration = new Date(expirationDate); + console.log(currentDatetime); + console.log(fiveMinutesBeforeExpiration); + + + if (currentDatetime <= fiveMinutesBeforeExpiration) { + return true; + } else { + return false; + } + } + return true; + } canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { - - const token = localStorage.getItem('user_token'); - - if(token != '' && token != undefined && token != null){ - // this.checkToken(); + if(this.token != '' && this.token != undefined && this.token != null){ return true }else{ - // alert("else"); - // this.router.navigate(['auth/login']); - this.router.navigate(['/auth/login']) - return false; + if(this.token != '' && this.token != undefined && this.token != null) + { + return true + + } + else + { + console.log('exp'); + + this.clearSession(); + this.router.navigate(['/auth/login']) + return false; + } } - - // if (this.shared.getToken()) { - // alert("if"); - // // this.router.navigate(['']); - // return true - // } else { - // alert("else"); - // this.router.navigate(['/login']); - // return false; - // } } canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { - + const token = localStorage.getItem('user_token'); - console.log(token) - if(token != '' && token != undefined && token != null){ - // this.checkToken(); + // console.log(this.isTokenExpired()); + + if(this.token != '' && this.token != undefined && this.token != null) + { + if (this.isTokenExpired()) { return true - }else{ - // setTimeout(() => { - this.router.navigate(['/auth/login']); - return false; - // },1000); + } + else{ + console.log('exp'); + localStorage.removeItem('token'); + localStorage.clear() + this.router.navigate(['/auth/login']); + return false; + } + } + else + { + return true; } - - // if (this.shared.getCurrentUser() != null && this.shared.getToken()) { - // // alert("if"); - - // return true; - // } else { - // // alert("else"); - // setTimeout(() => { - // this.router.navigate(['authentication/login']); - // return false; - // },1000); - - // } } - // public getToken(): string { - // return localStorage.getItem('token'); - // } - - // public logOut() { - // localStorage.clear(); - // if(localStorage.getItem('token') === null){ - // this.router.navigate(['/login']); - // } - // } - - - checkToken() { - const storedToken = localStorage.getItem('token'); - if (storedToken) { - try { - // this.token = jwt.verify(storedToken, 'vnms2023feb'); - // this.isAuthenticated = true; - } catch (err) { - console.error('Invalid token:', err); - //this.isAuthenticated = false; - this.logout(); - } - } else { - // this.isAuthenticated = false; - } - } - logout() { localStorage.removeItem('token'); localStorage.clear(); diff --git a/src/app/pages/order/order.component.html b/src/app/pages/order/order.component.html index 175fd57..af8331c 100644 --- a/src/app/pages/order/order.component.html +++ b/src/app/pages/order/order.component.html @@ -189,7 +189,7 @@