import { Injectable } from '@angular/core'; import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, } from '@angular/router'; import { Store, select } from '@ngrx/store'; import { map, take } from 'rxjs/operators'; import { Observable } from 'rxjs'; import { MwUserService } from '../user.service'; import * as userReducers from '../../@store/user.reducer'; @Injectable() export class ModuleAccessGuard implements CanActivate { constructor( private readonly store: Store, private readonly userService: MwUserService ) {} canActivate( route: ActivatedRouteSnapshot, state: RouterStateSnapshot ): Observable { return this.store.pipe( select(userReducers.hasAccess), map((hasAccess) => { if (!hasAccess) { this.userService.changeCompany(); return false; } return true; }), take(1) ); } }