diff --git a/Front/skydivelogs-app/src/services/authentication.service.ts b/Front/skydivelogs-app/src/services/authentication.service.ts index 7199329..03e59c0 100644 --- a/Front/skydivelogs-app/src/services/authentication.service.ts +++ b/Front/skydivelogs-app/src/services/authentication.service.ts @@ -6,6 +6,7 @@ import { map } from 'rxjs/operators'; import { User } from '../models/user'; import { BaseService } from './base.service'; +import { DateService } from './date.service'; @Injectable({ @@ -15,7 +16,7 @@ export class AuthenticationService extends BaseService { private currentUserSubject: BehaviorSubject; public currentUser: Observable; - constructor(private http: HttpClient) { + constructor(private http: HttpClient, private dateService: DateService) { super(); this.currentUserSubject = new BehaviorSubject(JSON.parse(localStorage.getItem('currentUser'))); @@ -23,6 +24,14 @@ export class AuthenticationService extends BaseService { } public get currentUserValue(): User { + const tmp = localStorage.getItem('currentUser'); + if (tmp) { + const storedUser = JSON.parse(tmp); + if (new Date().getTime() > storedUser.expired) { + localStorage.removeItem('currentUser'); + } + } + return this.currentUserSubject.value; } @@ -38,6 +47,8 @@ export class AuthenticationService extends BaseService { .pipe(map(user => { // store user details and basic auth credentials in local storage to keep user logged in between page refreshes user.authdata = window.btoa(username + ':' + password); + user.expired = this.dateService.AddDays(new Date(), 1).getTime(); + localStorage.setItem('currentUser', JSON.stringify(user)); this.currentUserSubject.next(user); return user;