diff options
Diffstat (limited to 'mod2/ui/src/app/guards')
-rw-r--r-- | mod2/ui/src/app/guards/auth.guard.spec.ts | 44 | ||||
-rw-r--r-- | mod2/ui/src/app/guards/auth.guard.ts | 62 | ||||
-rw-r--r-- | mod2/ui/src/app/guards/login.guard.spec.ts | 41 | ||||
-rw-r--r-- | mod2/ui/src/app/guards/login.guard.ts | 52 | ||||
-rw-r--r-- | mod2/ui/src/app/guards/role.guard.spec.ts | 44 | ||||
-rw-r--r-- | mod2/ui/src/app/guards/role.guard.ts | 61 |
6 files changed, 304 insertions, 0 deletions
diff --git a/mod2/ui/src/app/guards/auth.guard.spec.ts b/mod2/ui/src/app/guards/auth.guard.spec.ts new file mode 100644 index 0000000..c82f8d6 --- /dev/null +++ b/mod2/ui/src/app/guards/auth.guard.spec.ts @@ -0,0 +1,44 @@ +/* + * # ============LICENSE_START======================================================= + * # Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. + * # ================================================================================ + * # Licensed under the Apache License, Version 2.0 (the "License"); + * # you may not use this file except in compliance with the License. + * # You may obtain a copy of the License at + * # + * # http://www.apache.org/licenses/LICENSE-2.0 + * # + * # Unless required by applicable law or agreed to in writing, software + * # distributed under the License is distributed on an "AS IS" BASIS, + * # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * # See the License for the specific language governing permissions and + * # limitations under the License. + * # ============LICENSE_END========================================================= + */ + +import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { TestBed, async, inject } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { JwtHelperService, JWT_OPTIONS } from '@auth0/angular-jwt'; + +import { AuthGuard } from './auth.guard'; + +describe('AuthGuard', () => { + beforeEach(() => { + TestBed.configureTestingModule({ + providers: [ + AuthGuard, + { provide: JWT_OPTIONS, useValue: JWT_OPTIONS }, + JwtHelperService + ], + imports: [ + HttpClientTestingModule, + RouterTestingModule + ] + }); + }); + + it('should ...', inject([AuthGuard], (guard: AuthGuard) => { + expect(guard).toBeTruthy(); + })); +}); diff --git a/mod2/ui/src/app/guards/auth.guard.ts b/mod2/ui/src/app/guards/auth.guard.ts new file mode 100644 index 0000000..cce544b --- /dev/null +++ b/mod2/ui/src/app/guards/auth.guard.ts @@ -0,0 +1,62 @@ +/* + * # ============LICENSE_START======================================================= + * # Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. + * # ================================================================================ + * # Licensed under the Apache License, Version 2.0 (the "License"); + * # you may not use this file except in compliance with the License. + * # You may obtain a copy of the License at + * # + * # http://www.apache.org/licenses/LICENSE-2.0 + * # + * # Unless required by applicable law or agreed to in writing, software + * # distributed under the License is distributed on an "AS IS" BASIS, + * # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * # See the License for the specific language governing permissions and + * # limitations under the License. + * # ============LICENSE_END========================================================= + */ + +import { Injectable } from '@angular/core'; +import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree, Router } from '@angular/router'; +import { Observable, of } from 'rxjs'; +import { AuthService } from '../services/auth.service'; +import { catchError, map } from 'rxjs/operators'; + +@Injectable({ + providedIn: 'root' +}) +export class AuthGuard implements CanActivate { + + constructor( + private authService: AuthService, + private router: Router + ) {} + + canActivate( + next: ActivatedRouteSnapshot, + state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree { + + return this.authService.checkLogin().pipe(map((e:boolean)=>{ + if(e){ + this.authService.setUser(); + if(this.authService.getUser().roles.includes("ROLE_ADMIN")){ + this.authService.isAdmin = true; + }else{ + this.authService.isAdmin = false; + } + this.authService.authPass=true; + return true; + } + }), catchError(err=>{ + this.authService.reLoginMsg = true; + // window.alert("Your login has expired. Please log in again."); + this.authService.authPass=false; + this.router.navigate(['/login']); + return of(false); + })) + } + + + + +} diff --git a/mod2/ui/src/app/guards/login.guard.spec.ts b/mod2/ui/src/app/guards/login.guard.spec.ts new file mode 100644 index 0000000..d58450c --- /dev/null +++ b/mod2/ui/src/app/guards/login.guard.spec.ts @@ -0,0 +1,41 @@ +/* + * # ============LICENSE_START======================================================= + * # Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. + * # ================================================================================ + * # Licensed under the Apache License, Version 2.0 (the "License"); + * # you may not use this file except in compliance with the License. + * # You may obtain a copy of the License at + * # + * # http://www.apache.org/licenses/LICENSE-2.0 + * # + * # Unless required by applicable law or agreed to in writing, software + * # distributed under the License is distributed on an "AS IS" BASIS, + * # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * # See the License for the specific language governing permissions and + * # limitations under the License. + * # ============LICENSE_END========================================================= + */ + +import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { TestBed, async, inject } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { JwtHelperService, JWT_OPTIONS } from '@auth0/angular-jwt'; + +import { LoginGuard } from './login.guard'; + +describe('LoginGuard', () => { + beforeEach(() => { + TestBed.configureTestingModule({ + providers: [ + LoginGuard, + { provide: JWT_OPTIONS, useValue: JWT_OPTIONS }, + JwtHelperService + ], + imports: [HttpClientTestingModule, RouterTestingModule] + }); + }); + + it('should ...', inject([LoginGuard], (guard: LoginGuard) => { + expect(guard).toBeTruthy(); + })); +}); diff --git a/mod2/ui/src/app/guards/login.guard.ts b/mod2/ui/src/app/guards/login.guard.ts new file mode 100644 index 0000000..851ef61 --- /dev/null +++ b/mod2/ui/src/app/guards/login.guard.ts @@ -0,0 +1,52 @@ +/* + * # ============LICENSE_START======================================================= + * # Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. + * # ================================================================================ + * # Licensed under the Apache License, Version 2.0 (the "License"); + * # you may not use this file except in compliance with the License. + * # You may obtain a copy of the License at + * # + * # http://www.apache.org/licenses/LICENSE-2.0 + * # + * # Unless required by applicable law or agreed to in writing, software + * # distributed under the License is distributed on an "AS IS" BASIS, + * # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * # See the License for the specific language governing permissions and + * # limitations under the License. + * # ============LICENSE_END========================================================= + */ + +import { Injectable } from '@angular/core'; +import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree, Router } from '@angular/router'; +import { Observable, of } from 'rxjs'; +import { AuthService } from '../services/auth.service'; +import { catchError, map } from 'rxjs/operators'; + +@Injectable({ + providedIn: 'root' +}) +export class LoginGuard implements CanActivate { + constructor( + private authService: AuthService, + private router: Router + ) {} + + canActivate( + next: ActivatedRouteSnapshot, + state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree { + + return this.authService.checkLogin().pipe(map((e:boolean)=>{ + if(e){ + console.log("Hi this is loginguard"); + this.authService.authPass=true; + this.router.navigate(['/home']); + return true; + } + }), catchError(err=>{ + console.log("Login guard out"); + this.authService.authPass=false; + this.router.navigate(['/login']); + return of(false); + })) +} +} diff --git a/mod2/ui/src/app/guards/role.guard.spec.ts b/mod2/ui/src/app/guards/role.guard.spec.ts new file mode 100644 index 0000000..c57dfe6 --- /dev/null +++ b/mod2/ui/src/app/guards/role.guard.spec.ts @@ -0,0 +1,44 @@ +/* + * # ============LICENSE_START======================================================= + * # Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. + * # ================================================================================ + * # Licensed under the Apache License, Version 2.0 (the "License"); + * # you may not use this file except in compliance with the License. + * # You may obtain a copy of the License at + * # + * # http://www.apache.org/licenses/LICENSE-2.0 + * # + * # Unless required by applicable law or agreed to in writing, software + * # distributed under the License is distributed on an "AS IS" BASIS, + * # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * # See the License for the specific language governing permissions and + * # limitations under the License. + * # ============LICENSE_END========================================================= + */ + +import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { TestBed, async, inject } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { JwtHelperService, JWT_OPTIONS } from '@auth0/angular-jwt'; + +import { RoleGuard } from './role.guard'; + +describe('RoleGuard', () => { + beforeEach(() => { + TestBed.configureTestingModule({ + providers: [ + RoleGuard, + { provide: JWT_OPTIONS, useValue: JWT_OPTIONS }, + JwtHelperService + ], + imports: [ + HttpClientTestingModule, + RouterTestingModule + ] + }); + }); + + it('should ...', inject([RoleGuard], (guard: RoleGuard) => { + expect(guard).toBeTruthy(); + })); +}); diff --git a/mod2/ui/src/app/guards/role.guard.ts b/mod2/ui/src/app/guards/role.guard.ts new file mode 100644 index 0000000..7e5b7ae --- /dev/null +++ b/mod2/ui/src/app/guards/role.guard.ts @@ -0,0 +1,61 @@ +/* + * # ============LICENSE_START======================================================= + * # Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. + * # ================================================================================ + * # Licensed under the Apache License, Version 2.0 (the "License"); + * # you may not use this file except in compliance with the License. + * # You may obtain a copy of the License at + * # + * # http://www.apache.org/licenses/LICENSE-2.0 + * # + * # Unless required by applicable law or agreed to in writing, software + * # distributed under the License is distributed on an "AS IS" BASIS, + * # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * # See the License for the specific language governing permissions and + * # limitations under the License. + * # ============LICENSE_END========================================================= + */ + +import { Injectable } from '@angular/core'; +import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree, Router } from '@angular/router'; +import { Observable, of } from 'rxjs'; +import { AuthService } from '../services/auth.service'; +import { catchError, map } from 'rxjs/operators'; + +@Injectable({ + providedIn: 'root' +}) +export class RoleGuard implements CanActivate { + + + constructor( + private authService: AuthService, + private router: Router + ) {} + + canActivate( + next: ActivatedRouteSnapshot, + state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree { + + return this.authService.checkLogin().pipe(map((e:boolean)=>{ + if(e){ + console.log("role guard in"); + this.authService.setUser(); + if(this.authService.getUser().roles.includes("ROLE_ADMIN")){ + this.authService.isAdmin = true; + }else{ + this.authService.isAdmin = false; + this.router.navigate(['/home']); + } + return this.authService.getUser().roles.includes("ROLE_ADMIN"); + } + }), catchError(err=>{ + this.authService.reLoginMsg = true; + // window.alert("Your login has expired. Please log in again."); + this.authService.authPass=false; + this.router.navigate(['/login']); + return of(false); + })) + +} +} |