import { Injectable, Injector } from '@angular/core'; import { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'; import { AppSettings } from '../app.settings'; import { ActivatedRoute } from '@angular/router'; import { CbmsService } from '../cbms.services'; import { CbmsBaseUtilService } from './../services/cbms-base-util.service'; import { Observable } from 'rxjs'; import { PermissionService } from './../services/permission.service'; import { IEnvironmentsInfo } from '../Models/environmentsModel.info'; import { map } from 'rxjs/operators' //import { environment } from './../environments/environment'; @Injectable({ providedIn: 'root' }) export class AuthGuard { public config; constructor(private router: Router, public injector: Injector,private cbmsService: CbmsService, private queryStringRouter: ActivatedRoute, private cbmsbaseutil: CbmsBaseUtilService, private permissionService: PermissionService) { this.config=this.injector.get('config' as any); } canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { const routeString = (this.config.moduleName === 'budget' ? route.routeConfig.path : state.root.children[0].routeConfig.path).toLowerCase(); // if (this.cbmsbaseutil.IsAuthenticate) { if (this.permissionService.isPermissionLoaded) { return this.isValid(routeString); } else { return this.permissionService.permissionLoaded.pipe(map(() => this.isValid(routeString))); } // } else { // location.href = this.injector.get("config").appLoginURL; // return false; // } } public isValid(url: string): boolean { let hasPermision = true; if (this.permissionService.permissionLst.length > 0) { if (this.cbmsbaseutil.RoutesInfo) { for (let i = 0; i < this.cbmsbaseutil.RoutesInfo.length; i++) { if (url.indexOf(this.cbmsbaseutil.RoutesInfo[i].route.toLowerCase()) > -1) { hasPermision = false; if (this.permissionService.hasAnyPermissions(this.cbmsbaseutil.RoutesInfo[i].permissions)) { hasPermision = true; } break; } } } } else if (this.permissionService.isPermissionLoaded) { hasPermision = false; } if (!hasPermision) { location.href = this.config.appLoginURL; } return hasPermision; } }