Skip to content

Commit 1189323

Browse files
committed
create account db connection
1 parent c5ca162 commit 1189323

3 files changed

Lines changed: 18 additions & 8 deletions

File tree

routes/users.js

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ const bcrypt = require('bcrypt');
66
const Joi = require("joi");
77
const { sendVerificationEmail, sendPasswordResetEmail } = require('../services/mailer');
88
const passwordComplexity = require("joi-password-complexity");
9+
//Services
10+
const dbAdapter = require('../services/dbAdapter');
911
//Models
1012
const {validate, generateVerificationCode, generateAuthToken} = require('../models/User');
1113
//Middleware
@@ -20,17 +22,26 @@ router.post('/', async (req, res) => {
2022

2123
//Generate hashed and salted password
2224
let user = _.pick(req.body, ['username', 'email', 'password']);
25+
26+
if (await dbAdapter.getUserByEmail(user.email)) {
27+
debugRoute("POST /api/users - 400 - Email already registered");
28+
return res.status(400).send('Email already registered.');
29+
}
30+
31+
if (await dbAdapter.getUserByUsername(user.username)) {
32+
debugRoute("POST /api/users - 400 - Username already registered");
33+
return res.status(400).send('Username already registered.');
34+
}
35+
2336
const salt = bcrypt.genSaltSync(10);
2437
user.password = await bcrypt.hash(user.password, salt);
2538

26-
user.verificationCode = generateVerificationCode();
39+
user.email_verification_code = generateVerificationCode();
2740
await sendVerificationEmail(user)
2841

2942
user.lastSecurityUpdate = Date.now();
3043

31-
//TODO push to database and get id
32-
33-
user.id = 12;
44+
user = await dbAdapter.createUser(user);
3445

3546
debugRoute("POST /api/users - 200 - User created");
3647

services/dbAdapter.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
const { Client } = require('pg');
2-
const {func} = require("joi");
32
const config = require('config');
43
const debug = require('debug')('app:db');
54

@@ -91,7 +90,7 @@ async function updateUser(user) {
9190
return result.rows[0];
9291
}
9392
async function createUser(user) {
94-
const result = await client.query('INSERT INTO users(username, email, password) VALUES($1, $2, $3) RETURNING *', [user.username, user.email, user.password]);
93+
const result = await client.query('INSERT INTO users(username, email, password, email_verification_code) VALUES($1, $2, $3, $4) RETURNING *', [user.username, user.email, user.password, user.email_verification_code]);
9594
return result.rows[0];
9695
}
9796

services/mailer.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ async function sendVerificationEmail(user) {
3535
to: user.email, // list of receivers
3636
subject: "Verify your email", // Subject line
3737
text: "Verify your email", // plain text body
38-
html: `<h1>You registered for Turn2Green</h1><br><b>Verify your email:</b> <a href="${config.get('url')}/pages/verify.html?code=${user.verificationCode}">Verify</a>` // html body
38+
html: `<h1>You registered for Turn2Green</h1><br><b>Verify your email:</b> <a href="${config.get('url')}/pages/verify.html?code=${user.email_verification_code}">Verify</a>` // html body
3939
}
4040

4141
await sendMail(mailOptions);
@@ -51,7 +51,7 @@ async function sendPasswordResetEmail(user){
5151
to: user.email, // list of receivers
5252
subject: "Reset your password", // Subject line
5353
text: "Reset your password", // plain text body
54-
html: `<h1>You requested to reset your password</h1><br><b>Reset your password:</b> <a href="${config.get('url')}/pages/resetPassword.html?code=${user.passwordResetCode}">Reset</a>` // html body
54+
html: `<h1>You requested to reset your password</h1><br><b>Reset your password:</b> <a href="${config.get('url')}/pages/resetPassword.html?code=${user.email_verification_code}">Reset</a>` // html body
5555
}
5656

5757
await sendMail(mailOptions);

0 commit comments

Comments
 (0)