Skip to content

Commit e6a9242

Browse files
committed
Angular Security course
1 parent abe08a0 commit e6a9242

6 files changed

+34
-25
lines changed

server/auth.middleware.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import {Request, Response, NextFunction} from 'express';
22
import {isSessionTokenValid} from "./security.utils";
33

44

5+
56
export function retrieveUserIdFromRequest(req: Request, res: Response, next: NextFunction) {
67

78
const jwt = req.cookies['SESSIONID'];
@@ -14,13 +15,13 @@ export function retrieveUserIdFromRequest(req: Request, res: Response, next: Nex
1415
}
1516
}
1617

18+
19+
1720
async function handleSessionCookie(jwt, req: Request, next: NextFunction) {
1821
try {
1922

2023
const token = await isSessionTokenValid(jwt);
2124

22-
console.log("decoded token", token);
23-
2425
req['userId'] = token.sub;
2526

2627
}
@@ -33,10 +34,12 @@ async function handleSessionCookie(jwt, req: Request, next: NextFunction) {
3334
}
3435

3536

36-
export function checkIfAuthenticated(req: Request, res: Response, next: NextFunction) {
37-
38-
console.log("Calling check if authenticated ...");
39-
40-
next();
4137

38+
export function checkIfAuthenticated(req: Request, res: Response, next: NextFunction) {
39+
if (req["userId"]) {
40+
next();
41+
}
42+
else {
43+
res.sendStatus(403);
44+
}
4245
}

server/database.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,25 @@ class InMemoryDatabase {
4747
return _.find(users, user => user.email === email);
4848
}
4949

50+
findUserById(userId:string) :DbUser {
51+
52+
let user = undefined;
53+
54+
if (userId) {
55+
56+
console.log("looking for userId ", userId);
57+
58+
const users = _.values(USERS);
59+
60+
user = _.find(users, user => user.id.toString() === userId);
61+
62+
console.log("user data found:", user);
63+
}
64+
65+
return user;
66+
67+
}
68+
5069
}
5170

5271

server/get-user.route.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11

22

33
import {Request, Response} from "express";
4+
import {db} from "./database";
45

56

67

78
export function getUser(req:Request, res:Response) {
89

9-
const userId = req.cookies['SESSIONID'];
10-
11-
//TODO
12-
const user = {email:'test@gmail.com'};
10+
const userId = req['userId'];
1311

12+
const user = db.findUserById(userId);
1413

1514
if (user) {
1615
res.status(200).json(user);

server/read-all-lessons.route.ts

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,6 @@ import {db} from "./database";
44

55
export function readAllLessons(req, res) {
66

7-
const sessionId = req.cookies["SESSIONID"];
8-
9-
//TODO
10-
const isSessionValid = true;
11-
12-
if (!isSessionValid) {
13-
res.sendStatus(403);
14-
}
15-
else {
16-
res.status(200).json({lessons:db.readAllLessons()});
17-
}
7+
res.status(200).json({lessons:db.readAllLessons()});
188

199
}

server/security.utils.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,6 @@ export async function createSessionToken(userId:number) {
3434

3535
export async function isSessionTokenValid(sessionToken:string) {
3636

37-
console.log("validating token", sessionToken);
38-
3937
const verify = await jwt.verify(sessionToken, RSA_PUBLIC_KEY);
4038

4139
console.log("decoded token", verify);

server/server.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ app.route('/api/signup')
3838
.post(createUser);
3939

4040
app.route('/api/user')
41-
.get(checkIfAuthenticated, getUser);
41+
.get(getUser);
4242

4343
app.route('/api/logout')
4444
.post(checkIfAuthenticated, logout);

0 commit comments

Comments
 (0)