Skip to content

Commit fb241d6

Browse files
committed
login and signup almost complete
1 parent c79fa23 commit fb241d6

File tree

5 files changed

+60
-37
lines changed

5 files changed

+60
-37
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@
123123
"autoprefixer": "^9.0.1",
124124
"babel-polyfill": "^6.26.0",
125125
"bcryptjs": "^2.4.3",
126+
"body-parser": "^1.19.0",
126127
"classnames": "^2.2.6",
127128
"cli-spinner": "^0.2.8",
128129
"commander": "^2.17.1",

server/controllers/cookieController.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,16 @@ const cookieController = {};
55
cookieController.setCookie = (req, res, next) => {
66
// set cookie with key of 'secret' and value of a random number between 0 and 1000
77
res.cookie('secret', Math.floor(Math.random() * 1000));
8+
console.log('Successful setCookie');
89
return next();
910
};
1011

1112
// setSSIDCookie - store the user id from database in cookie
1213
cookieController.setSSIDCookie = (req, res, next) => {
1314
// set cookie with key 'ssid' and value to user's id, also set http only
1415
res.cookie('ssid', res.locals.id, { httpOnly: true });
16+
console.log('Successful setSSIDCookie');
1517
return next();
1618
};
19+
20+
module.exports = cookieController;
Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,43 @@
1-
const Session = require('../models/sessionModel')
1+
const Session = require('../models/sessionModel');
22
const sessionController = {};
33

44
// isLoggedIn finds appropriate session for this request in database, then verifies whether or not the session is still valid
55
sessionController.isLoggedIn = (req, res, next) => {
66
// find cookie with current user's ssid value
7-
Session.findOne({cookieId: req.cookies.ssid}, (err, session) => {
8-
if (err) {
9-
return next({
10-
log: `Error in sessionController.isLoggedIn: ${err}`,
11-
message: {
12-
err: `Error in sessionController.isLoggedIn, check server logs for details`
13-
}
14-
})
15-
// no session found, redirect to signup page
16-
} else if (!session) {
17-
return res.redirect('/signup')
18-
} else {
19-
// session found, move onto next middleware
20-
return next();
21-
}
22-
})
23-
}
7+
Session.findOne({ cookieId: req.cookies.ssid }, (err, session) => {
8+
if (err) {
9+
return next({
10+
log: `Error in sessionController.isLoggedIn: ${err}`,
11+
message: {
12+
err: `Error in sessionController.isLoggedIn, check server logs for details`
13+
}
14+
});
15+
// no session found, redirect to signup page
16+
} else if (!session) {
17+
return res.redirect('/signup');
18+
} else {
19+
// session found, move onto next middleware
20+
return next();
21+
}
22+
});
23+
};
2424

2525
// startSession - create and save a new session into the database
2626
sessionController.startSession = (req, res, next) => {
2727
// if valid user logged in/signed up, res.locals.id should be user's id generated from mongodb
28-
Session.create({cookieId: res.locals.id}, (err) => {
28+
console.log('Inside startSession');
29+
Session.create({ cookieId: res.locals.id }, err => {
2930
if (err) {
3031
return next({
3132
log: `Error in sessionController.startSession: ${err}`,
3233
message: {
3334
err: `Error in sessionController.startSession, check server logs for details`
3435
}
35-
})
36+
});
3637
}
38+
console.log('Successful startSession');
3739
return next();
38-
})
39-
}
40+
});
41+
};
4042

41-
module.exports = sessionController;
43+
module.exports = sessionController;

server/controllers/userController.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ const userController = {};
66
const bcrypt = require('bcryptjs');
77

88
userController.createUser = (req, res, next) => {
9-
console.log('Inside createUser')
9+
console.log('Inside createUser');
1010
const { username, password } = req.body;
1111
// error handling if username or password is missing
1212
if (!username || !password) {
@@ -24,6 +24,7 @@ userController.createUser = (req, res, next) => {
2424
});
2525
} else {
2626
// this id property will be used in other middleware for cookie
27+
console.log('Successfule createUser');
2728
res.locals.id = newUser.id;
2829
return next();
2930
}
@@ -34,6 +35,7 @@ userController.createUser = (req, res, next) => {
3435
// the appropriate user in the database, and then authenticate the submitted password against the password stored in the database.
3536

3637
userController.verifyUser = (req, res, next) => {
38+
console.log('Inside verifyUser');
3739
const { username, password } = req.body;
3840
Users.findOne({ username }, (err, user) => {
3941
if (err) {
@@ -48,11 +50,12 @@ userController.verifyUser = (req, res, next) => {
4850
bcrypt.compare(password, user.password).then(isMatch => {
4951
if (isMatch) {
5052
// if password matches, save user id for following middleware
53+
console.log('Successful verifyUser');
5154
res.locals.id = user.id;
5255
return next();
5356
} else {
5457
// if password does not match, redirect to ?
55-
res.redirect('/login');
58+
return res.redirect('/login');
5659
}
5760
});
5861
}

server/server.js

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
const express = require('express');
2-
const mongoose = require('mongoose')
2+
const mongoose = require('mongoose');
33
const path = require('path');
44
const cookieParser = require('cookie-parser');
5-
const userController = require('./controllers/userController')
6-
const cookieController = require('./controllers/cookieController')
5+
const userController = require('./controllers/userController');
6+
const cookieController = require('./controllers/cookieController');
7+
const sessionController = require('./controllers/sessionController');
78
const app = express();
89
const PORT = 8080;
910

@@ -28,17 +29,29 @@ app.use(cookieParser());
2829
// statically serve everything in build folder
2930
app.use('/build', express.static(path.resolve(__dirname, '../build')));
3031

31-
// app.get('/', cookieController.setCookie, (req, res) => {
32-
// res.status(200).sendFile('../build/index.html');
33-
// })
32+
app.get('/', cookieController.setCookie, (req, res) => {
33+
res.status(200).sendFile(path.resolve(__dirname, '../src/public/index.html'));
34+
});
3435

35-
app.post('/signup', userController.createUser, (req, res) => {
36-
return res.status(200).json(res.locals.newUser)
37-
})
36+
app.post(
37+
'/signup',
38+
userController.createUser,
39+
cookieController.setSSIDCookie,
40+
sessionController.startSession,
41+
(req, res) => {
42+
return res.status(200).json(res.locals.newUser);
43+
}
44+
);
3845

39-
app.post('/login', userController.verifyUser, (req, res) => {
40-
return res.status(200).json(res.locals.id)
41-
})
46+
app.post(
47+
'/login',
48+
userController.verifyUser,
49+
cookieController.setSSIDCookie,
50+
sessionController.startSession,
51+
(req, res) => {
52+
return res.status(200).json(res.locals.id);
53+
}
54+
);
4255

4356
// catch-all route handler
4457
app.use('*', (req, res) => {

0 commit comments

Comments
 (0)