// TODON1 models/user.js
var schema = new Schema({
userName: {type: String, required: true},
password: {type: String, required: true},
email: {type: String, required: true, unique: true}
});
///TODON2 models/user.js
module.exports = mongoose.model('User', schema);
///TODON03 router/user.js
var user = new User({
userName: req.body.userName,
password: bcrypt.hashSync(req.body.password, 10),
email: req.body.email
});
user.save(function(err, result) {
if (err) {
return res.status(500).json({
title: 'An error occurred',
error: err
});
}
res.status(201).json({
message: 'User created',
obj: result
});
});
///TODON04 router/user.js
User.findOne({email: req.body.email}, function(err, user) {
if (err) {
return res.status(500).json({
title: 'An error occurred',
error: err
});
}
if (!user) {
return res.status(401).json({
title: 'Login failed',
error: {message: 'Invalid login credentials'}
});
}
if (!bcrypt.compareSync(req.body.password, user.password)) {
return res.status(401).json({
title: 'Login failed',
error: {message: 'Invalid login credentials'}
});
}
var token = jwt.sign({user: user}, 'secret', {expiresIn: 7200});
res.status(200).json({
message: 'Successfully logged in',
token: token,
userId: user._id
});
});
///TODON5 app.js
var mongoose = require('mongoose');
///TODON6 app.js
mongoose.connect('localhost:27017/ebasket');
///TODON7 app.js
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
res.setHeader('Access-Control-Allow-Methods', 'POST, GET, PATCH, DELETE, OPTIONS');
///TODON8 app.js
var express = require('express');
var cookieParser = require('cookie-parser');
///TODON9 app.js
app.use(cookieParser());
///TODON10 app.js
var app = express();
///TODON11 router/user.js
var router = express.Router();
///TODON12 public/data/category.json
{
"type": "Fruits",
"id": "fruits",
"products": [
{
"label": "Fresh Fruits",
"id": "freshFruits"
},
{
"label": "Herbs",
"id": "herbs"
},
{
"label": "Fresh Vegetable",
"id": "freshVegetable"
}
]
},
{
"type": "Vegetables",
"id": "vegetables",
"products": [
{
"label": "Fresh Vegetables",
"id": "fresh"
},
{
"label": "Frozen Vegetables",
"id": "frozen"
},
{
"label": "Cut Vegetables",
"id": "cutvege"
}
]
},
{
"type": "Groceries",
"id": "grocery",
"products": [
{
"label": "Detergents",
"id": "detergent"
},
{
"label": "Toilet/Floor cleaner",
"id": "herbs"
},
{
"label": "Breakfast Cereals",
"id": "cereals"
}
]
}