Skip to content

Commit 2df2fcb

Browse files
author
Vishwas Gopinath - I16165
committed
Add navigation
1 parent 4d77245 commit 2df2fcb

File tree

7 files changed

+42
-11
lines changed

7 files changed

+42
-11
lines changed

ngApp/server/routes/api.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,9 @@ router.post('/register', (req, res) => {
122122
if (err) {
123123
console.log(err)
124124
} else {
125-
res.status(200).send('Successfully registered!')
125+
let payload = {subject: registeredUser._id}
126+
let token = jwt.sign(payload, 'secretKey')
127+
res.status(200).send({token})
126128
}
127129
})
128130
})
@@ -141,7 +143,6 @@ router.post('/login', (req, res) => {
141143
} else {
142144
let payload = {subject: user._id}
143145
let token = jwt.sign(payload, 'secretKey')
144-
console.log(token)
145146
res.status(200).send({token})
146147
}
147148
}

ngApp/src/app/app.component.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,9 @@
1414
</li>
1515
</ul>
1616
<ul class="navbar-nav">
17-
<a class="nav-link" routerLink="/login" routerLinkActive="active">Login</a>
18-
<a class="nav-link" routerLink="/register" routerLinkActive="active">Register</a>
17+
<a class="nav-link" *ngIf="!_authService.loggedIn()" routerLink="/login" routerLinkActive="active">Login</a>
18+
<a class="nav-link" *ngIf="!_authService.loggedIn()" routerLink="/register" routerLinkActive="active">Register</a>
19+
<a class="nav-link" style="cursor:pointer" *ngIf="_authService.loggedIn()" (click)="_authService.logoutUser()">Logout</a>
1920
</ul>
2021
</div>
2122
</nav>

ngApp/src/app/app.component.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { Component } from '@angular/core';
2+
import { AuthService } from './auth.service';
23

34
@Component({
45
selector: 'app-root',
@@ -7,4 +8,5 @@ import { Component } from '@angular/core';
78
})
89
export class AppComponent {
910
title = 'app';
11+
constructor(private _authService: AuthService){}
1012
}

ngApp/src/app/auth.service.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
import { Injectable } from '@angular/core';
22
import { HttpClient } from '@angular/common/http'
3+
import { Router } from '@angular/router'
34

45
@Injectable()
56
export class AuthService {
67

78
private _registerUrl = "/api/register";
89
private _loginUrl = "/api/login";
910

10-
constructor(private http: HttpClient) { }
11+
constructor(private http: HttpClient,
12+
private _router: Router) { }
1113

1214
registerUser(user) {
1315
return this.http.post<any>(this._registerUrl, user)
@@ -17,8 +19,16 @@ export class AuthService {
1719
return this.http.post<any>(this._loginUrl, user)
1820
}
1921

22+
logoutUser() {
23+
localStorage.removeItem('token')
24+
this._router.navigate(['/events'])
25+
}
26+
2027
getToken() {
2128
return localStorage.getItem('token')
2229
}
2330

31+
loggedIn() {
32+
return !!localStorage.getItem('token')
33+
}
2434
}

ngApp/src/app/login/login.component.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import { Component, OnInit } from '@angular/core';
22
import { AuthService } from '../auth.service';
3+
import { Router } from '@angular/router'
4+
35

46
@Component({
57
selector: 'app-login',
@@ -10,7 +12,8 @@ export class LoginComponent implements OnInit {
1012

1113
loginUserData = {}
1214

13-
constructor(private _auth: AuthService) { }
15+
constructor(private _auth: AuthService,
16+
private _router: Router) { }
1417

1518
ngOnInit() {
1619
}
@@ -19,8 +22,8 @@ export class LoginComponent implements OnInit {
1922
this._auth.loginUser(this.loginUserData)
2023
.subscribe(
2124
res => {
22-
console.log(res)
2325
localStorage.setItem('token', res.token)
26+
this._router.navigate(['/special'])
2427
},
2528
err => console.log(err)
2629
)

ngApp/src/app/register/register.component.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { Component, OnInit } from '@angular/core';
22
import { AuthService } from '../auth.service';
3+
import { Router } from '@angular/router'
34

45
@Component({
56
selector: 'app-register',
@@ -9,15 +10,19 @@ import { AuthService } from '../auth.service';
910
export class RegisterComponent implements OnInit {
1011

1112
registerUserData = {}
12-
constructor(private _auth: AuthService) { }
13+
constructor(private _auth: AuthService,
14+
private _router: Router) { }
1315

1416
ngOnInit() {
1517
}
1618

1719
registerUser() {
1820
this._auth.registerUser(this.registerUserData)
1921
.subscribe(
20-
res => console.log(res),
22+
res => {
23+
localStorage.setItem('token', res.token)
24+
this._router.navigate(['/special'])
25+
},
2126
err => console.log(err)
2227
)
2328
}

ngApp/src/app/special-events/special-events.component.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import { Component, OnInit } from '@angular/core';
22
import { EventService } from '../event.service';
3+
import { HttpErrorResponse } from '@angular/common/http';
4+
import { Router } from '@angular/router'
35

46
@Component({
57
selector: 'app-special-events',
@@ -10,14 +12,21 @@ export class SpecialEventsComponent implements OnInit {
1012

1113
specialEvents = []
1214

13-
constructor(private _eventService: EventService) { }
15+
constructor(private _eventService: EventService,
16+
private _router: Router) { }
1417

1518

1619
ngOnInit() {
1720
this._eventService.getSpecialEvents()
1821
.subscribe(
1922
res => this.specialEvents = res,
20-
err => console.log(err)
23+
err => {
24+
if( err instanceof HttpErrorResponse ) {
25+
if (err.status === 401) {
26+
this._router.navigate(['/login'])
27+
}
28+
}
29+
}
2130
)
2231
}
2332

0 commit comments

Comments
 (0)