|
@@ -3,9 +3,11 @@ import {Observable, ReplaySubject} from "rxjs";
|
|
|
import {v4 as uuidv4} from 'uuid';
|
|
|
import {JwtHelperService} from "@auth0/angular-jwt";
|
|
|
import * as _ from 'underscore';
|
|
|
+import {ActivatedRouteSnapshot, CanActivate, CanActivateChild, RouterStateSnapshot, UrlTree} from "@angular/router";
|
|
|
+import {map} from "rxjs/operators";
|
|
|
|
|
|
@Injectable({providedIn: "root"})
|
|
|
-export class PersonService {
|
|
|
+export class PersonService implements CanActivate, CanActivateChild {
|
|
|
|
|
|
private siteId: string
|
|
|
private helper = new JwtHelperService();
|
|
@@ -17,6 +19,14 @@ export class PersonService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
|
|
|
+ return this.getCurrentPerson().pipe(map(person => _.isObject(person.auth)))
|
|
|
+ }
|
|
|
+
|
|
|
+ canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
|
|
|
+ return this.canActivate(childRoute, state)
|
|
|
+ }
|
|
|
+
|
|
|
resetCurrentPerson() {
|
|
|
localStorage.removeItem("token");
|
|
|
this.currentPerson = null;
|
|
@@ -38,7 +48,7 @@ export class PersonService {
|
|
|
let decodedToken = this.helper.decodeToken(tkr);
|
|
|
//const expirationDate = this.helper.getTokenExpirationDate(tkr);
|
|
|
if (!this.helper.isTokenExpired(tkr)) {
|
|
|
- p.auth = {};
|
|
|
+ p.auth = <PersonInfo>{id: decodedToken.sub};
|
|
|
}
|
|
|
}
|
|
|
ret.next(p)
|
|
@@ -51,5 +61,9 @@ export class PersonService {
|
|
|
|
|
|
export class Person {
|
|
|
public siteId: string
|
|
|
- public auth: any
|
|
|
+ public auth: PersonInfo
|
|
|
+}
|
|
|
+
|
|
|
+export class PersonInfo {
|
|
|
+ id: string
|
|
|
}
|