Moved all heroes functionality into milestone 2 Crisis Center initial functionality is milestone 3 Admin feature module as milestone 4 including route guard examples Updated milestone 5 to lazy load admin feature module Added examples for CanLoad, CanActivateChildren guard, component-less routes Added section on explanation of ActivatedRoute Added section on animating route components Added section on relative navigation
		
			
				
	
	
		
			48 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| // #docplaster
 | |
| // #docregion
 | |
| import { Injectable }       from '@angular/core';
 | |
| import {
 | |
|   CanActivate, Router,
 | |
|   ActivatedRouteSnapshot,
 | |
|   RouterStateSnapshot,
 | |
|   CanActivateChild,
 | |
|   NavigationExtras
 | |
| }                           from '@angular/router';
 | |
| import { AuthService }      from './auth.service';
 | |
| 
 | |
| @Injectable()
 | |
| export class AuthGuard implements CanActivate, CanActivateChild {
 | |
|   constructor(private authService: AuthService, private router: Router) {}
 | |
| 
 | |
|   canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
 | |
|     let url: string = state.url;
 | |
| 
 | |
|     return this.checkLogin(url);
 | |
|   }
 | |
| 
 | |
|   canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
 | |
|     return this.canActivate(route, state);
 | |
|   }
 | |
| 
 | |
|   checkLogin(url: string): boolean {
 | |
|     if (this.authService.isLoggedIn) { return true; }
 | |
| 
 | |
|     // Store the attempted URL for redirecting
 | |
|     this.authService.redirectUrl = url;
 | |
| 
 | |
|     // Create a dummy session id
 | |
|     let sessionId = 123456789;
 | |
| 
 | |
|     // Set our navigation extras object
 | |
|     // that contains our global query params and fragment
 | |
|     let navigationExtras: NavigationExtras = {
 | |
|       queryParams: { 'session_id': sessionId },
 | |
|       fragment: 'anchor'
 | |
|     };
 | |
| 
 | |
|     // Navigate to the login page with extras
 | |
|     this.router.navigate(['/login'], navigationExtras);
 | |
|     return false;
 | |
|   }
 | |
| }
 |