Skip to content

Commit b53fb14

Browse files
committed
add item handler with cookie info
1 parent 3699e23 commit b53fb14

File tree

7 files changed

+31
-18
lines changed

7 files changed

+31
-18
lines changed

package-lock.json

+5
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
},
3434
"dependencies": {
3535
"bcryptjs": "^2.4.3",
36+
"cookie": "^0.3.1",
3637
"jsonwebtoken": "^8.1.0",
3738
"pg": "^7.4.0",
3839
"validator": "^9.1.2"

public/index.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -68,12 +68,11 @@ form.addEventListener('submit', function(event) {
6868
cost: itemCost.value,
6969
date: datePurchased.value
7070
}
71-
request('input', 'POST', function(err, res) {
71+
request('add', 'POST', function(err, res) {
7272
if (err) console.log(err);
7373
displayCurrentItems();
7474
}, JSON.stringify(newItem));
7575

76-
user.value = ""; //need to get username from cookie
7776
category.value = "";
7877
itemCost.value = "";
7978
datePurchased.value = "";

src/handler.js

+15-6
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
const fs = require('fs');
22
const path = require('path');
33
const querystring = require('querystring');
4-
// const { parse } = require('cookie');
5-
const { sign, verify } = require('jsonwebtoken');
4+
const cookieModule = require('cookie');
5+
const { sign, verify, decode } = require('jsonwebtoken');
66
const checkUser = require('./queries/check_user');
77
const createUser = require('./queries/create_user');
88
const setNewItem = require('./queries/set_new_item');
@@ -174,18 +174,27 @@ const loginHandler = (request, response) => {
174174

175175

176176

177-
const addItemHandler = (request, response, endpoint) => {
177+
const addItemHandler = (request, response) => {
178178
let allTheData = '';
179179
request.on('data', (chunckOfData) => {
180180
allTheData += chunckOfData;
181181
});
182182
request.on('end', () => {
183183
const newItem = JSON.parse(allTheData);
184-
// console.log('newItem' ,newItem);
185-
setNewItem(newItem, (err, res) => {
184+
let cookies = cookieModule.parse(request.headers.cookie);
185+
let decoded = decode(cookies.jwt);
186+
187+
let itemObj = {
188+
userId : decoded.id,
189+
cost : newItem.cost,
190+
category: newItem.category,
191+
date: newItem.date
192+
}
193+
194+
setNewItem(itemObj, (err, res) => {
186195
if (err) console.log(err)
187196
response.writeHead(200, { 'content-type': 'application/json' })
188-
response.writeHead(200, { 'location': '/' })
197+
response.writeHead(200, { 'location': 'main' })
189198
response.end(JSON.stringify(res));
190199
})
191200
})

src/queries/set_new_item.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ const databaseConnection = require('../database/db_connection.js');
22

33
const setNewItem = (newItem, cb) => {
44
databaseConnection.query(
5-
'INSERT INTO items (user_id, cost, category, date_purchased, status) VALUES ((SELECT id FROM users WHERE user_name = $1), $2, $3, $4, $5)', [newItem.username, newItem.cost, newItem.category, newItem.date, false],
5+
'INSERT INTO items (user_id, cost, category, date_purchased, status) VALUES ($1, $2, $3, $4, $5)', [newItem.userId, newItem.cost, newItem.category, newItem.date, false],
66
(err, res) => {
77
if (err) {
88
return cb(err);
@@ -12,4 +12,4 @@ const setNewItem = (newItem, cb) => {
1212
})
1313
};
1414

15-
module.exports = setNewItem;
15+
module.exports = setNewItem;

src/router.js

+5-6
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,15 @@ const router = (request, response) => {
88
} else if (endpoint.includes("public")) {
99
staticFileHandler(request, response, endpoint);
1010
} else if (endpoint.includes("signup")){
11-
signUpHandler(request, response, endpoint);
11+
signUpHandler(request, response);
1212
} else if (endpoint.includes("login")){
13-
loginHandler(request, response, endpoint);
13+
loginHandler(request, response);
1414
} else if (endpoint.includes("logout")){
15-
logoutHandler(request, response, endpoint);
15+
logoutHandler(request, response);
1616
} else if (endpoint.includes("/main")) {
1717
mainPageHandler(request, response);
18-
}
19-
else if (endpoint.includes("add")) {
20-
addItemHandler(request, response, endpoint);
18+
} else if (endpoint.includes("add")) {
19+
addItemHandler(request, response);
2120
} else if (endpoint.includes("sumall")) {
2221
sumAllHandler(request, response);
2322
} else if (endpoint.includes("displayItems")) {

tests/tests.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ test('test createUser', (t) => {
6767
test('test setNewItem', (t) => {
6868
runDbBuild(function(err, res) {
6969
let newItem = {
70-
username: 'Alina',
70+
userId: 1,
7171
cost: 2.45,
7272
category: 'Groceries',
7373
date: new Date('2017-11-29'),
@@ -129,4 +129,4 @@ test('markAsPaid', (t) => {
129129

130130
})
131131
})
132-
});
132+
});

0 commit comments

Comments
 (0)