Skip to content

Commit eba0e21

Browse files
committed
Angular Security course
1 parent 44ff711 commit eba0e21

8 files changed

+10
-123
lines changed

server/auth.middleware.ts

Lines changed: 0 additions & 45 deletions
This file was deleted.

server/create-user.route.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import {db} from "./database";
44
import * as argon2 from 'argon2';
55
import {validatePassword} from "./password-validation";
66
import moment = require("moment");
7-
import {createCsrfToken, createSessionToken, randomBytes} from "./security.utils";
87

98

109

@@ -32,14 +31,11 @@ async function createUserAndSession(res:Response, credentials) {
3231

3332
const user = db.createUser(credentials.email, passwordDigest);
3433

35-
const sessionToken = await createSessionToken(user.id);
36-
37-
const csrfToken = await createCsrfToken();
34+
// TODO replace with JWT
35+
const sessionToken = 1;
3836

3937
res.cookie("SESSIONID", sessionToken, {httpOnly:true, secure:true});
4038

41-
res.cookie("CSRF-TOKEN", csrfToken);
42-
4339
res.status(200).json({id:user.id, email:user.email});
4440
}
4541

server/csrf.middleware.ts

Lines changed: 0 additions & 23 deletions
This file was deleted.

server/get-user.route.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,20 @@
11

22

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

65

76

87
export function getUser(req:Request, res:Response) {
98

10-
const userId = req['userId'];
11-
12-
const user = db.findUserById(userId);
9+
//TODO retrieve the actual user based on JWT content
10+
const user = {
11+
email:'test@gmail.com'
12+
};
1313

1414
if (user) {
1515
res.status(200).json(user);
1616
}
1717
else {
1818
res.sendStatus(204);
1919
}
20-
2120
}

server/login.route.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@
33
import {Request, Response} from "express";
44
import {db} from "./database";
55
import * as argon2 from 'argon2';
6-
import {User} from "../src/app/model/user";
76
import {DbUser} from "./db-user";
8-
import {createCsrfToken, createSessionToken, randomBytes} from "./security.utils";
97

108

119

@@ -32,12 +30,8 @@ async function loginAndBuildResponse(credentials:any, user:DbUser, res: Respons
3230

3331
console.log("Login successful");
3432

35-
const csrfToken = createCsrfToken();
36-
3733
res.cookie("SESSIONID", sessionToken, {httpOnly:true, secure:true});
3834

39-
res.cookie("CSRF-TOKEN", csrfToken);
40-
4135
res.status(200).json({id:user.id, email:user.email});
4236

4337
}
@@ -59,7 +53,8 @@ async function attemptLogin(credentials:any, user:DbUser) {
5953
throw new Error("Password Invalid");
6054
}
6155

62-
return createSessionToken(user.id);
56+
//TODO return JWT
57+
return 1;
6358
}
6459

6560

server/logout.route.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,7 @@ import {Request, Response} from 'express';
66

77
export function logout(req: Request, res: Response) {
88

9-
const sessionId = req.cookies['SESSIONID'];
10-
119
res.clearCookie("SESSIONID");
12-
res.clearCookie("CSRF-TOKEN");
1310

1411
res.sendStatus(200);
1512
}

server/security.utils.ts

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -20,32 +20,3 @@ const RSA_PUBLIC_KEY = fs.readFileSync('./demos/public.key');
2020
const SESSION_DURATION = 240;
2121

2222

23-
export async function createSessionToken(userId:number) {
24-
return jwt.sign(
25-
{
26-
},
27-
RSA_PRIVATE_KEY,
28-
{
29-
algorithm: 'RS256',
30-
expiresIn: SESSION_DURATION,
31-
subject: '' + userId
32-
});
33-
}
34-
35-
36-
export async function isSessionTokenValid(sessionToken:string) {
37-
38-
const verify = await jwt.verify(sessionToken, RSA_PUBLIC_KEY);
39-
40-
console.log("decoded token", verify);
41-
42-
return verify;
43-
}
44-
45-
46-
export async function createCsrfToken() {
47-
return randomBytes(32).then(bytes => bytes.toString('hex'));
48-
}
49-
50-
51-

server/server.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,13 @@ import {createUser} from "./create-user.route";
99
import {getUser} from "./get-user.route";
1010
import {logout} from "./logout.route";
1111
import {login} from "./login.route";
12-
import {checkIfAuthenticated, retrieveUserIdFromRequest} from "./auth.middleware";
13-
import {checkCsrfToken} from "./csrf.middleware";
1412
const bodyParser = require('body-parser');
1513
const cookieParser = require('cookie-parser');
1614

1715

1816
const app: Application = express();
1917

2018
app.use(cookieParser());
21-
app.use(retrieveUserIdFromRequest);
2219
app.use(bodyParser.json());
2320

2421

@@ -33,7 +30,7 @@ const options = commandLineArgs(optionDefinitions);
3330

3431
// REST API
3532
app.route('/api/lessons')
36-
.get(checkIfAuthenticated, readAllLessons);
33+
.get(readAllLessons);
3734

3835
app.route('/api/signup')
3936
.post(createUser);
@@ -42,7 +39,7 @@ app.route('/api/user')
4239
.get(getUser);
4340

4441
app.route('/api/logout')
45-
.post(checkIfAuthenticated, checkCsrfToken, logout);
42+
.post( logout);
4643

4744
app.route('/api/login')
4845
.post(login);

0 commit comments

Comments
 (0)