Skip to content

Commit 3f38d76

Browse files
author
Your Name
committed
Firebase & AngularFire In Depth
1 parent 446c21a commit 3f38d76

File tree

1 file changed

+55
-34
lines changed

1 file changed

+55
-34
lines changed

src/app/app-routing.module.ts

Lines changed: 55 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -5,49 +5,70 @@ import {AboutComponent} from './about/about.component';
55
import {CourseComponent} from './course/course.component';
66
import {LoginComponent} from './login/login.component';
77
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';
910
import {CreateUserComponent} from './create-user/create-user.component';
1011
import {CourseResolver} from "./services/course.resolver";
12+
import {pipe} from "rxjs";
13+
import {map} from "rxjs/operators";
1114

12-
const routes: Routes = [
13-
{
14-
path: '',
15-
component: HomeComponent
16-
},
17-
{
18-
path: 'create-course',
19-
component: CreateCourseComponent
15+
const redirectUnauthorizedToLogin = () => redirectUnauthorizedTo(['login']);
2016

21-
},
22-
{
23-
path: 'create-user',
24-
component: CreateUserComponent
17+
const adminOnly = () => hasCustomClaim("admin");
2518

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: '/'
4066
}
41-
},
42-
{
43-
path: '**',
44-
redirectTo: '/'
45-
}
4667
];
4768

4869
@NgModule({
49-
imports: [RouterModule.forRoot(routes)],
50-
exports: [RouterModule]
70+
imports: [RouterModule.forRoot(routes)],
71+
exports: [RouterModule]
5172
})
5273
export class AppRoutingModule {
5374
}

0 commit comments

Comments
 (0)