Skip to content

Instantly share code, notes, and snippets.

@leifermendez
Created May 10, 2021 06:51
Show Gist options
  • Save leifermendez/4b07f775645ec71c70558423a59e1eed to your computer and use it in GitHub Desktop.
Save leifermendez/4b07f775645ec71c70558423a59e1eed to your computer and use it in GitHub Desktop.
roles.guard.ts
import {Injectable} from '@angular/core';
import {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree} from '@angular/router';
import {Observable} from 'rxjs';
import {UserService} from './user.service';
@Injectable({
providedIn: 'root'
})
export class RolesGuard implements CanActivate {
constructor(private userService: UserService, private router: Router) {
}
canActivate(
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot,
): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
return this.checkUserLogin(route);
}
checkUserLogin(route: ActivatedRouteSnapshot): boolean {
const {scopes = []} = this.userService.getCurrentUser();
console.log(scopes.includes(route.data.role));
// TODO: ['write'].includes('write') //true false
if (scopes.includes(route.data.role)) {
return true;
} else {
this.router.navigate(['/', 'not-role']);
return false;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment