Skip to content

Commit 08975db

Browse files
committed
Typescript Bootcamp
1 parent 0310b53 commit 08975db

File tree

2 files changed

+48
-0
lines changed

2 files changed

+48
-0
lines changed

rest-api/src/routes/login.ts

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import {NextFunction, Request, Response} from "express";
2+
import {logger} from "../logger";
3+
import {AppDataSource} from "../data-source";
4+
import {User} from "../models/user";
5+
6+
7+
export async function login(
8+
request: Request, response: Response, next:NextFunction) {
9+
10+
try {
11+
12+
logger.debug(`Called login()`);
13+
14+
const {email, password} = request.body;
15+
16+
if (!email) {
17+
throw `Could not extract the email from the request, aborting.`;
18+
}
19+
20+
if (!password) {
21+
throw `Could not extract the plain text password from the request, aborting.`;
22+
}
23+
24+
const user = await AppDataSource
25+
.getRepository(User)
26+
.createQueryBuilder("users")
27+
.where("email = :email", {email})
28+
.getOne();
29+
30+
if (!user) {
31+
const message = `Login denied.`;
32+
logger.info(`${message} - ${email}`);
33+
response.status(403).json({message});
34+
return;
35+
}
36+
37+
38+
39+
}
40+
catch(error) {
41+
logger.error(`Error calling login()`);
42+
return next(error);
43+
}
44+
45+
}

rest-api/src/server.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import {updateCourse} from "./routes/update-course";
2121
import {createCourse} from "./routes/create-course";
2222
import {deleteCourseAndLessons} from "./routes/delete-course";
2323
import {createUser} from "./routes/create-user";
24+
import {login} from "./routes/login";
2425

2526
const cors = require("cors");
2627

@@ -51,6 +52,8 @@ function setupExpress() {
5152

5253
app.route("/api/users").post(createUser);
5354

55+
app.route("/api/login").post(login);
56+
5457
app.use(defaultErrorHandler);
5558

5659
}

0 commit comments

Comments
 (0)