import { Injectable } from '@angular/core'; import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree, Router } from '@angular/router'; import { Observable } from 'rxjs'; import { SessionStore } from '../store/session.service'; import { Platform } from '@ionic/angular'; import { RouteService } from 'src/app/services/route.service' import { FirstEnterService } from 'src/app/services/first-enter.service' @Injectable({ providedIn: 'root' }) export class LoginGuard implements CanActivate { constructor( private router:Router, private platform: Platform, private FirstEnterService: FirstEnterService ) { } canActivate( route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | Promise | boolean | UrlTree { if(SessionStore.exist && SessionStore.user.Inactivity && SessionStore.user.LoginPreference != 'Pin' ) { // enter app this.FirstEnterService.enter() return false } else if(SessionStore.exist && !SessionStore.user.Inactivity && SessionStore.user.LoginPreference == 'Pin' && SessionStore.forceToLoginWithForceToLogInWithPassword && this.platform.is('mobile')) { // login with password while has pin SessionStore.forceToLoginWithForceToLogInWithPassword = false return true } else if(SessionStore.exist && this.platform.is('mobile') && SessionStore.user.LoginPreference == 'Pin' ) { // go to pin page this.router.navigate(['/pin']); return false } else if(SessionStore.exist && !SessionStore.user.Inactivity && SessionStore.user.LoginPreference == 'Pin' && this.platform.is('mobile')) { this.router.navigate(['/inactivity']); return false } else { return true } } }