Advertisement
Guest User

Untitled

a guest
Oct 18th, 2019
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import { Injectable } from '@angular/core';
  2. import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
  3. import { AuthService } from './auth.service';
  4. import { Observable, of, throwError } from 'rxjs';
  5. import { catchError } from 'rxjs/operators';
  6. import { HttpErrorResponse } from '@angular/common/http';
  7. import { AuthUserModel } from '../models/auth-user-model';
  8.  
  9. @Injectable({ providedIn: 'root' })
  10. export class AuthGuard implements CanActivate {
  11.  
  12.  
  13.     constructor(
  14.         private router: Router,
  15.         private auth: AuthService
  16.     ) { }
  17.  
  18.     canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
  19.         const result = new Observable<boolean>(observer => {
  20.  
  21.             this.auth.fetchUser().pipe(
  22.                 catchError((err: HttpErrorResponse) => {
  23.                     if(err.status === 401) {
  24.                         observer.next(false);
  25.  
  26.                         observer.complete();
  27.        
  28.                         this.router.navigate(['/login']);
  29.  
  30.                         return of([]);
  31.                     } else{
  32.                         return throwError(err);
  33.                     }
  34.  
  35.                 })
  36.             ).subscribe((user:AuthUserModel) => {
  37.                 this.auth.setUser(user);
  38.  
  39.                 observer.next(true);
  40.  
  41.                 observer.complete();
  42.             })
  43.         });
  44.  
  45.         return result;
  46.     }
  47.  
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement