Skip to content

Instantly share code, notes, and snippets.

@CodingGorilla
Created September 17, 2019 04:42
Show Gist options
  • Save CodingGorilla/c0aa62c41e04003c148806cea064c304 to your computer and use it in GitHub Desktop.
Save CodingGorilla/c0aa62c41e04003c148806cea064c304 to your computer and use it in GitHub Desktop.
Auth guard
import {map} from 'rxjs/operators';
import {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot} from '@angular/router';
import {Injectable} from '@angular/core';
import {Observable} from 'rxjs';
import {AuthenticationService} from './services/authentication.service';
import {CurrentUserService} from './services/current-user.service';
@Injectable()
export class AuthenticationGuard implements CanActivate {
constructor(private _router: Router,
private _authService: AuthenticationService,
private _currentUserService: CurrentUserService) {
}
public canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
if(!this._authService.isAuthenticated) {
this._router.navigate(['login']);
return false;
} else if(route.data && route.data.requiredRoles) {
return this._currentUserService
.getCurrentUser().pipe(
map(user => {
return user.hasAnyRole(route.data.requiredRoles);
}));
}
return true;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment