From 1c30658540ca3d1831985f866d044d39bcf99d1d Mon Sep 17 00:00:00 2001 From: suseendhiran17 <58357088+suseendhiran17@users.noreply.github.com> Date: Mon, 7 Aug 2023 11:33:51 +0530 Subject: [PATCH] susee --- package-lock.json | 5 + package.json | 1 + src/app/app-routing.module.ts | 9 +- src/app/pages/_guard/auth.guard.ts | 139 +++++++++++------------ src/app/pages/order/order.component.html | 2 +- src/app/pages/pages-routing.module.ts | 2 +- src/app/pages/pages.module.ts | 2 + src/environments/environment.ts | 3 +- 8 files changed, 88 insertions(+), 75 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9973a0f..1b7b247 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12965,6 +12965,11 @@ "set-immediate-shim": "~1.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==" + }, "karma": { "version": "6.3.19", "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.19.tgz", diff --git a/package.json b/package.json index b60bf90..f14aedb 100644 --- a/package.json +++ b/package.json @@ -57,6 +57,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 5b05625..ccb56d8 100644 --- a/src/app/pages/order/order.component.html +++ b/src/app/pages/order/order.component.html @@ -189,7 +189,7 @@
- {{row.item.updatedAt | date :'dd/MM/yy'}} + {{row.item.updatedAt | date :'dd/MM/yy hh:mm:ss'}}
diff --git a/src/app/pages/pages-routing.module.ts b/src/app/pages/pages-routing.module.ts index 0071b82..7fa55c0 100644 --- a/src/app/pages/pages-routing.module.ts +++ b/src/app/pages/pages-routing.module.ts @@ -19,7 +19,7 @@ import { ReturnSheetComponent } from './return-sheet/return-sheet.component'; const routes: Routes = [{ path: '', - + canActivateChild:[AuthGuard], component: PagesComponent, children: [ { diff --git a/src/app/pages/pages.module.ts b/src/app/pages/pages.module.ts index 1695105..3cc3f56 100644 --- a/src/app/pages/pages.module.ts +++ b/src/app/pages/pages.module.ts @@ -50,6 +50,7 @@ import { EmailComponent } from './email/email.component'; import { DriverySheetComponent } from './drivery-sheet/drivery-sheet.component'; import { AddOrderComponent } from './order/add-order/add-order.component'; import { ReturnSheetComponent } from './return-sheet/return-sheet.component'; +import { AuthGuard } from './_guard/auth.guard'; @NgModule({ imports: [ PagesRoutingModule, @@ -98,6 +99,7 @@ import { ReturnSheetComponent } from './return-sheet/return-sheet.component'; MixedFormComponent, AuthComponent,ForgotPasswordComponent, OtpComponent,ResetPasswordComponent, ViewDetailsComponent, SummaryListComponent, SummaryDetailsComponent, EmailComponent, DriverySheetComponent, AddOrderComponent, ReturnSheetComponent, ], + providers:[AuthGuard], schemas: [CUSTOM_ELEMENTS_SCHEMA,NO_ERRORS_SCHEMA], }) export class PagesModule { diff --git a/src/environments/environment.ts b/src/environments/environment.ts index 21fcd30..3237ea4 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -9,7 +9,8 @@ // The list of which env maps to which file can be found in `.angular-cli.json`. export const environment = { - apiEndpoint:'https://dev.venbait.in/vnms/api/', + // apiEndpoint:'https://dev.venbait.in/vnms/api/', + apiEndpoint:'http://localhost:8081/api/', // apiEndpoint:'http://192.168.1.17:8081/api/', mailUrl:'', production: false,