Skip to content

Commit 16ea721

Browse files
committed
File Upload
1 parent 215c2c9 commit 16ea721

File tree

5 files changed

+92
-55
lines changed

5 files changed

+92
-55
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@
22
node_modules/
33
package-lock.json
44

5+
Server-side Development with NodeJS, Express and MongoDB/conFusionServer/public/images/pic.jpg

Server-side Development with NodeJS, Express and MongoDB/conFusionServer/app.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ var usersRouter = require('./routes/users');
1818
var dishRouter = require('./routes/dishRouter');
1919
var promoRouter = require('./routes/promoRouter');
2020
var leaderRouter = require('./routes/leaderRouter');
21-
21+
const uploadRouter = require('./routes/uploadRouter');
2222

2323

2424
// DB
@@ -68,7 +68,7 @@ app.use(express.static(path.join(__dirname, 'public')));
6868
app.use('/dishes',dishRouter);
6969
app.use('/promos',promoRouter);
7070
app.use('/leaders',leaderRouter);
71-
71+
app.use('/imageUpload',uploadRouter);
7272

7373

7474
// catch 404 and forward to error handler

Server-side Development with NodeJS, Express and MongoDB/conFusionServer/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
"mongoose": "^5.1.7",
1717
"mongoose-currency": "^0.2.0",
1818
"morgan": "~1.9.1",
19+
"multer": "^1.3.1",
1920
"passport": "^0.4.0",
2021
"passport-jwt": "^4.0.0",
2122
"passport-local": "^1.0.0",
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
const express = require('express');
2+
const bodyParser = require('body-parser');
3+
const authenticate = require('../authenticate');
4+
const multer = require('multer');
5+
6+
const storage = multer.diskStorage({
7+
destination: (req, file, cb) => {
8+
cb(null, 'public/images');
9+
},
10+
11+
filename: (req, file, cb) => {
12+
cb(null, file.originalname)
13+
}
14+
});
15+
16+
const imageFileFilter = (req, file, cb) => {
17+
if(!file.originalname.match(/\.(jpg|jpeg|png|gif)$/)) {
18+
return cb(new Error('You can upload only image files!'), false);
19+
}
20+
cb(null, true);
21+
};
22+
23+
const upload = multer({ storage: storage, fileFilter: imageFileFilter});
24+
25+
const uploadRouter = express.Router();
26+
27+
uploadRouter.use(bodyParser.json());
28+
29+
uploadRouter.route('/')
30+
.get(authenticate.verifyUser, authenticate.verifyAdmin, (req, res, next) => {
31+
res.statusCode = 403;
32+
res.end('GET operation not supported on /imageUpload');
33+
})
34+
.post(authenticate.verifyUser, authenticate.verifyAdmin, upload.single('imageFile'), (req, res) => {
35+
res.statusCode = 200;
36+
res.setHeader('Content-Type', 'application/json');
37+
res.json(req.file);
38+
})
39+
.put(authenticate.verifyUser, authenticate.verifyAdmin, (req, res, next) => {
40+
res.statusCode = 403;
41+
res.end('PUT operation not supported on /imageUpload');
42+
})
43+
.delete(authenticate.verifyUser, authenticate.verifyAdmin, (req, res, next) => {
44+
res.statusCode = 403;
45+
res.end('DELETE operation not supported on /imageUpload');
46+
});
47+
48+
module.exports = uploadRouter;
Lines changed: 40 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
1-
var express = require('express');
2-
var router = express.Router();
1+
const express = require('express');
32
const bodyParser = require('body-parser');
4-
var User = require('../models/user');
5-
var passport = require('passport');
6-
var authenticate = require('../authenticate');
3+
const User = require('../models/user');
4+
const passport = require('passport');
5+
const authenticate = require('../authenticate');
76

87

9-
router.use(bodyParser.json());
8+
const usersRouter = express.Router();
9+
usersRouter.use(bodyParser.json());
1010

11-
/* GET users listing. */
12-
router.route('/')
11+
usersRouter.route('/')
1312
.get( authenticate.verifyUser, authenticate.verifyAdmin, (req, res, next)=> {
1413
User.find({})
1514
.then((users) =>{
@@ -19,59 +18,50 @@ router.route('/')
1918
}, (err) => next(err))
2019
.catch((err) => next(err));
2120
})
21+
// USERS/SIGN UP
2222

23-
24-
25-
// SIGN UP
26-
router.post('/signup', (req, res, next) => {
27-
User.register(new User({username: req.body.username}),
23+
usersRouter.post('/signup', (req, res, next) => {
24+
User.register(new User({ username: req.body.username }),
2825
req.body.password, (err, user) => {
29-
if(err) {
30-
res.statusCode = 500;
31-
res.setHeader('Content-Type', 'application/json');
32-
res.json({err: err});
33-
}
34-
else {
35-
if (req.body.firstname)
36-
user.firstname = req.body.firstname;
37-
if (req.body.lastname)
38-
user.lastname = req.body.lastname;
39-
user.save((err, user) => {
40-
if (err) {
41-
res.statusCode = 500;
42-
res.setHeader('Content-Type', 'application/json');
43-
res.json({err: err});
44-
return ;
45-
}
46-
passport.authenticate('local')(req, res, () => {
47-
res.statusCode = 200;
48-
res.setHeader('Content-Type', 'application/json');
49-
res.json({success: true, status: 'Registration Successful!'});
26+
if (err) {
27+
res.statusCode = 500;
28+
res.setHeader('Content-Type', 'application/json');
29+
res.json({ err: err });
30+
}
31+
else {
32+
if (req.body.firstname)
33+
user.firstname = req.body.firstname;
34+
if (req.body.lastname)
35+
user.lastname = req.body.lastname;
36+
user.save((err, user) => {
37+
if (err) {
38+
res.statusCode = 500;
39+
res.setHeader('Content-Type', 'application/json');
40+
res.json({ err: err });
41+
return;
42+
}
43+
passport.authenticate('local')(req, res, () => {
44+
res.statusCode = 200;
45+
res.setHeader('Content-Type', 'application/json');
46+
res.json({ success: true, status: 'Registration Successful!' });
47+
});
5048
});
51-
});
52-
}
53-
});
49+
}
50+
});
5451
});
5552

56-
//LOGIN
57-
router.post('/login', passport.authenticate('local'), (req, res) => {
5853

59-
// var token = authenticate.getToken({
60-
// _id: req.user._id,
61-
// firstname: req.user.firstname,
62-
// lastname: req.user.lastname
63-
// });
54+
// USERS/LOGIN
6455

56+
usersRouter.post('/login', passport.authenticate('local'), (req, res) => {
6557

66-
var token = authenticate.getToken({_id: req.user._id});
58+
var token = authenticate.getToken({ _id: req.user._id });//going to create a token by giving a payload, which only contains the ID of the user. So, we'll say id: req.user._id. That is sufficient enough for creating the JsonWebToken. We don't want to include any other of the user's information
6759
res.statusCode = 200;
6860
res.setHeader('Content-Type', 'application/json');
69-
res.json({success: true, token: token, status: 'You are successfully logged in!'});
61+
res.json({ success: true, token: token, status: 'You are successfully logged in!' });
7062
});
7163

72-
// LOGOUT
73-
74-
router.get('/logout', (req, res) => {
64+
usersRouter.get('/logout', (req, res,next) => {
7565
if (req.session) {
7666
req.session.destroy();
7767
res.clearCookie('session-id');
@@ -84,7 +74,4 @@ router.get('/logout', (req, res) => {
8474
}
8575
});
8676

87-
88-
89-
90-
module.exports = router;
77+
module.exports = usersRouter;

0 commit comments

Comments
 (0)