Fix mod ui build issues
[dcaegen2/platform.git] / mod2 / ui / src / app / guards / role.guard.ts
1 /* 
2  *  # ============LICENSE_START=======================================================
3  *  # Copyright (c) 2020 AT&T Intellectual Property. All rights reserved.
4  *  # ================================================================================
5  *  # Licensed under the Apache License, Version 2.0 (the "License");
6  *  # you may not use this file except in compliance with the License.
7  *  # You may obtain a copy of the License at
8  *  #
9  *  #      http://www.apache.org/licenses/LICENSE-2.0
10  *  #
11  *  # Unless required by applicable law or agreed to in writing, software
12  *  # distributed under the License is distributed on an "AS IS" BASIS,
13  *  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  *  # See the License for the specific language governing permissions and
15  *  # limitations under the License.
16  *  # ============LICENSE_END=========================================================
17  */
18
19 import { Injectable } from '@angular/core';
20 import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree, Router } from '@angular/router';
21 import { Observable, of } from 'rxjs';
22 import { AuthService } from '../services/auth.service';
23 import { catchError, map } from 'rxjs/operators';
24
25 @Injectable({
26   providedIn: 'root'
27 })
28 export class RoleGuard implements CanActivate {
29
30
31   constructor(
32     private authService: AuthService,
33     private router: Router
34   ) {}
35
36   canActivate(
37     next: ActivatedRouteSnapshot,
38     state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
39    
40       return this.authService.checkLogin().pipe(map((e:boolean)=>{
41         if(e){
42           console.log("role guard in");
43           this.authService.setUser();
44           if(this.authService.getUser().roles.includes("ROLE_ADMIN")){
45             this.authService.isAdmin = true;
46           }else{
47             this.authService.isAdmin = false;
48             this.router.navigate(['/home']);
49           }
50           return this.authService.getUser().roles.includes("ROLE_ADMIN");
51         } 
52       }), catchError(err=>{
53         this.authService.reLoginMsg = true;
54         // window.alert("Your login has expired. Please log in again.");
55         this.authService.authPass=false;
56         this.router.navigate(['/login']);
57         return of(false);
58       }))
59   
60 }
61 }