@@ -5,49 +5,70 @@ import {AboutComponent} from './about/about.component';
5
5
import { CourseComponent } from './course/course.component' ;
6
6
import { LoginComponent } from './login/login.component' ;
7
7
import { CreateCourseComponent } from './create-course/create-course.component' ;
8
- import { AngularFireAuthGuard , hasCustomClaim , redirectUnauthorizedTo } from '@angular/fire/auth-guard' ;
8
+ import { AngularFireAuthGuard , customClaims , hasCustomClaim , redirectUnauthorizedTo }
9
+ from '@angular/fire/auth-guard' ;
9
10
import { CreateUserComponent } from './create-user/create-user.component' ;
10
11
import { CourseResolver } from "./services/course.resolver" ;
12
+ import { pipe } from "rxjs" ;
13
+ import { map } from "rxjs/operators" ;
11
14
12
- const routes : Routes = [
13
- {
14
- path : '' ,
15
- component : HomeComponent
16
- } ,
17
- {
18
- path : 'create-course' ,
19
- component : CreateCourseComponent
15
+ const redirectUnauthorizedToLogin = ( ) => redirectUnauthorizedTo ( [ 'login' ] ) ;
20
16
21
- } ,
22
- {
23
- path : 'create-user' ,
24
- component : CreateUserComponent
17
+ const adminOnly = ( ) => hasCustomClaim ( "admin" ) ;
25
18
26
- } ,
27
- {
28
- path : 'about' ,
29
- component : AboutComponent
30
- } ,
31
- {
32
- path : 'login' ,
33
- component : LoginComponent
34
- } ,
35
- {
36
- path : 'courses/:courseUrl' ,
37
- component : CourseComponent ,
38
- resolve : {
39
- course : CourseResolver
19
+ const routes : Routes = [
20
+ {
21
+ path : '' ,
22
+ component : HomeComponent ,
23
+ canActivate : [ AngularFireAuthGuard ] ,
24
+ data : {
25
+ authGuardPipe : redirectUnauthorizedToLogin
26
+ }
27
+ } ,
28
+ {
29
+ path : 'create-course' ,
30
+ component : CreateCourseComponent ,
31
+ canActivate : [ AngularFireAuthGuard ] ,
32
+ data : {
33
+ authGuardPipe : adminOnly
34
+ }
35
+ } ,
36
+ {
37
+ path : 'create-user' ,
38
+ component : CreateUserComponent ,
39
+ canActivate : [ AngularFireAuthGuard ] ,
40
+ data : {
41
+ authGuardPipe : adminOnly
42
+ }
43
+ } ,
44
+ {
45
+ path : 'about' ,
46
+ component : AboutComponent
47
+ } ,
48
+ {
49
+ path : 'login' ,
50
+ component : LoginComponent
51
+ } ,
52
+ {
53
+ path : 'courses/:courseUrl' ,
54
+ component : CourseComponent ,
55
+ resolve : {
56
+ course : CourseResolver
57
+ } ,
58
+ canActivate : [ AngularFireAuthGuard ] ,
59
+ data : {
60
+ authGuardPipe : redirectUnauthorizedToLogin
61
+ }
62
+ } ,
63
+ {
64
+ path : '**' ,
65
+ redirectTo : '/'
40
66
}
41
- } ,
42
- {
43
- path : '**' ,
44
- redirectTo : '/'
45
- }
46
67
] ;
47
68
48
69
@NgModule ( {
49
- imports : [ RouterModule . forRoot ( routes ) ] ,
50
- exports : [ RouterModule ]
70
+ imports : [ RouterModule . forRoot ( routes ) ] ,
71
+ exports : [ RouterModule ]
51
72
} )
52
73
export class AppRoutingModule {
53
74
}
0 commit comments