Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import { Injectable } from '@angular/core';
- import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
- import { AuthService } from './auth.service';
- import { Observable, of, throwError } from 'rxjs';
- import { catchError } from 'rxjs/operators';
- import { HttpErrorResponse } from '@angular/common/http';
- import { AuthUserModel } from '../models/auth-user-model';
- @Injectable({ providedIn: 'root' })
- export class AuthGuard implements CanActivate {
- constructor(
- private router: Router,
- private auth: AuthService
- ) { }
- canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
- const result = new Observable<boolean>(observer => {
- this.auth.fetchUser().pipe(
- catchError((err: HttpErrorResponse) => {
- if(err.status === 401) {
- observer.next(false);
- observer.complete();
- this.router.navigate(['/login']);
- return of([]);
- } else{
- return throwError(err);
- }
- })
- ).subscribe((user:AuthUserModel) => {
- this.auth.setUser(user);
- observer.next(true);
- observer.complete();
- })
- });
- return result;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement