diff options
Diffstat (limited to 'frontend/src/app')
-rw-r--r-- | frontend/src/app/_services/auth.service.ts | 39 | ||||
-rw-r--r-- | frontend/src/app/app.component.ts | 7 |
2 files changed, 38 insertions, 8 deletions
diff --git a/frontend/src/app/_services/auth.service.ts b/frontend/src/app/_services/auth.service.ts index 449b8802..ccfbe15f 100644 --- a/frontend/src/app/_services/auth.service.ts +++ b/frontend/src/app/_services/auth.service.ts @@ -24,10 +24,16 @@ export class AuthService { return this.http.post(`${API_SETTINGS.apiURL}/auth/register`, { ...user }, { responseType: 'text' }); } + getGuestToken(){ + return this.http.post(`${API_SETTINGS.apiURL}/auth/guestToken`, {}, { responseType: 'text' }); + } + isAuthenticated(): boolean { if (this.cookie.check('token')) { var token = this.cookie.get('token'); - return !jwtHelper.isTokenExpired(token); + var property=jwtHelper.decodeToken(this.cookie.get('token')); + var username=property['name']; + return !jwtHelper.isTokenExpired(token) && username!=""; } return false; } @@ -41,12 +47,30 @@ export class AuthService { if (!exp) { exp = new Date(); } - this.refresher = setTimeout(() => { - console.log('refreshing token!'); - this.http.post(`${API_SETTINGS.apiURL}/auth/renewJwt`, {}, { headers: this.authHeader(), responseType: 'text' }).subscribe((response) => { - this.authenticate(response); - }); - }, exp.getTime() - new Date().getTime() - 60000); + var property=jwtHelper.decodeToken(this.cookie.get('token')); + var username=property['name']; + if(username!=""){ + this.refresher = setTimeout(() => { + console.log('refreshing token!'); + this.http.post(`${API_SETTINGS.apiURL}/auth/renewJwt`, {}, { headers: this.authHeader(), responseType: 'text' }).subscribe((response) => { + this.authenticate(response); + }); + }, exp.getTime() - new Date().getTime() - 60000); + } + else{ + this.refresher = setTimeout(() => { + console.log('refreshing token!'); + this.getGuestToken().subscribe((response) => { + this.authenticate(response); + }); + }, exp.getTime() - new Date().getTime() - 60000); + } + } + + addGuestToken(){ + this.getGuestToken().subscribe((token)=>{ + this.authenticate(token); + }); } authenticate(token: string) { @@ -74,6 +98,7 @@ export class AuthService { if (this.refresher) clearTimeout(this.refresher); this.shared.loggedIn = false; + this.addGuestToken(); } authHeader() { diff --git a/frontend/src/app/app.component.ts b/frontend/src/app/app.component.ts index f5ae5786..8c6f8452 100644 --- a/frontend/src/app/app.component.ts +++ b/frontend/src/app/app.component.ts @@ -2,6 +2,7 @@ import { Component, OnInit } from '@angular/core'; import { Title } from '@angular/platform-browser'; import { Router, NavigationEnd, ActivatedRoute } from '@angular/router'; import { filter, map } from 'rxjs'; +import { AuthService } from './_services/auth.service'; @Component({ selector: 'app-root', @@ -10,7 +11,7 @@ import { filter, map } from 'rxjs'; }) export class AppComponent implements OnInit { - constructor(private router: Router, private titleService: Title) { } + constructor(private router: Router, private titleService: Title,private authService:AuthService) { } ngOnInit() { this.router.events @@ -33,5 +34,9 @@ export class AppComponent implements OnInit { this.titleService.setTitle(`${title} - Igrannonica`); } }); + if(!this.authService.isAuthenticated()) + { + this.authService.addGuestToken(); + } } } |