Skip to content

Commit 71298f0

Browse files
author
Your Name
committed
Angular Router Course
1 parent 5b4b974 commit 71298f0

File tree

2 files changed

+33
-1
lines changed

2 files changed

+33
-1
lines changed

src/app/courses/courses-routing.module.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {LessonDetailComponent} from './lesson/lesson-detail.component';
77
import {LessonsListComponent} from './lessons-list/lessons-list.component';
88
import {LessonsResolver} from './services/lessons.resolver';
99
import {LessonDetailResolver} from './services/lesson-detail.resolver';
10+
import {AuthGuard} from '../services/auth.guard';
1011

1112

1213
const routes: Routes = [
@@ -17,6 +18,7 @@ const routes: Routes = [
1718
{
1819
path:":courseUrl",
1920
component: CourseComponent,
21+
canActivate: [AuthGuard],
2022
children: [
2123
{
2224
path: "",
@@ -47,7 +49,8 @@ const routes: Routes = [
4749
providers: [
4850
CourseResolver,
4951
LessonsResolver,
50-
LessonDetailResolver
52+
LessonDetailResolver,
53+
AuthGuard
5154
]
5255
})
5356
export class CoursesRoutingModule {

src/app/services/auth.guard.ts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import {Injectable} from '@angular/core';
2+
import {AuthStore} from './auth.store';
3+
import {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree} from '@angular/router';
4+
import {Observable} from 'rxjs';
5+
import {map} from 'rxjs/operators';
6+
7+
8+
@Injectable()
9+
export class AuthGuard implements CanActivate {
10+
11+
constructor(private auth:AuthStore,
12+
private router:Router) {
13+
14+
}
15+
16+
17+
canActivate(route: ActivatedRouteSnapshot,
18+
state: RouterStateSnapshot):
19+
Observable<boolean | UrlTree> {
20+
21+
return this.auth.isLoggedIn$
22+
.pipe(
23+
map(loggedIn =>
24+
loggedIn? true: this.router.parseUrl('/login') )
25+
);
26+
27+
}
28+
29+
}

0 commit comments

Comments
 (0)