Skip to content

Commit 2aadc3b

Browse files
committed
update due to activation_codes being a different table now
1 parent dbaf432 commit 2aadc3b

File tree

3 files changed

+38
-9
lines changed

3 files changed

+38
-9
lines changed

api/activate.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,9 @@ const db = require('./../db');
44
const app = express.Router();
55

66
app.get('/activate/:code([a-zA-Z0-9]{64})', async (req, res) => {
7-
await db.query(
8-
'update users set activated=$1, activation_code=$2 where activation_code=$3',
9-
[true, null, req.params.code]
10-
);
7+
await db.query('delete from activation_codes where activation_code = $1', [
8+
req.params.code
9+
]);
1110

1211
res.sendStatus(200);
1312
});

api/createAccount.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,22 +42,28 @@ app.post('/create', async (req, res) => {
4242
await checkAccountExists(req.body.username, req.body.email);
4343
const activationCode = makeActivationCode(req.body.username);
4444
try {
45-
await db.query(
46-
'insert into users (id, username, password_hash, email, activation_code, activated) values ($1, $2, $3, $4, $5, $6)',
45+
const userRes = await db.query(
46+
'insert into users (id, username, password_hash, email, activated) values ($1, $2, $3, $4, $5) returning id',
4747
[
4848
ulid(),
4949
req.body.username,
5050
hashPassword(req.body.password),
5151
req.body.email,
52-
activationCode,
5352
false
5453
]
5554
);
55+
56+
const userId = userRes.rows[0].id;
57+
58+
await db.query(
59+
'insert into activation_codes (id, user_id, activation_code) values ($1, $2, $3)',
60+
[ulid(), userId, activationCode]
61+
);
5662
res.sendStatus(200);
5763
emailer.sendActivationEmail(req.body.email, activationCode);
5864
} catch (err) {
5965
console.log(err);
60-
res.sendStatus(503);
66+
return res.sendStatus(503);
6167
}
6268
} catch (err) {
6369
console.log(err);

api/login.js

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,34 @@ app.post('/login', async (req, res) => {
1919

2020
try {
2121
const result = await db.query(
22-
'select username, id, password_hash from users where username=$1',
22+
'select username, id, password_hash, activated from users where username=$1',
2323
[req.body.username]
2424
);
2525

26+
if (result.rows.length !== 1) {
27+
return res.status(500).send();
28+
}
29+
30+
const userId = result.rows[0].id;
31+
32+
const activatedRes = await db.query(
33+
'select id from activation_codes where user_id = $1',
34+
[userId]
35+
);
36+
37+
if (activatedRes.rows.length > 0) {
38+
return res.status(403).json({
39+
error: 'User not activated'
40+
});
41+
}
42+
43+
if (!result.rows[0].activated) {
44+
await db.query('update users set activated=$2 where id = $1', [
45+
userId,
46+
true
47+
]);
48+
}
49+
2650
if (bcrypt.compareSync(req.body.password, result.rows[0].password_hash)) {
2751
const token = jwt.sign(
2852
{

0 commit comments

Comments
 (0)