socketioMEANseed/server/controllers/chefController.js
server/controllers/chefController.jsRaw
1var express = require('express');
2var app = express();
3var jwt = require('jsonwebtoken');
4var config = require('../config/config');
5var crypto = require('crypto');
6
7app.set('superSecret', config.secret);
8
9/*******MODELS*********/
10//var chefModel = require('../models/chefModel');
11var userModel = require('../models/userModel');
12var dietModel = require('../models/dietModel');
13
14/**GET '/chefs' **/
15exports.getChefs = function (req, res) {
16 userModel.find({role: 'chef'})
17 .limit(Number(req.query.pageSize))
18 .skip(Number(req.query.pageSize)*Number(req.query.page))
19 .exec(function (err, chefs) {
20 if (err) return res.send(500, err.message);
21 res.status(200).jsonp(chefs);
22 });
23};
24
25/** GET '/chefs/:chefid' **/
26exports.getChefById = function (req, res) {
27 userModel.findOne({_id: req.params.chefid})
28 .lean()
29 .populate('diets', 'title description')
30 .exec(function (err, chef) {
31 if (err) return res.send(500, err.message);
32 res.status(200).jsonp(chef);
33 });
34};
35
36/** PUT '/chefs/:chefid' **/
37exports.updateChefById = function (req, res) {
38 var id = req.params.chefid;
39 var chef = req.body;
40 userModel.update({"_id": id}, chef,
41 function (err) {
42 if (err) return console.log(err);
43 console.log(chef);
44 res.status(200).jsonp(chef);
45 });
46};
47
48/** DELETE '/chefs/:chefid' **/
49exports.deleteChefById = function (req, res) {
50 userModel.findByIdAndRemove({_id: req.params.chefid}, function (err) {
51 if (err) return res.send(500, err.message);
52 res.status(200).send("Chef deleted");
53 });
54};
55
56/** POST '/chefs/register' **/
57exports.register = function (req, res) {
58 var chef = new userModel({
59 name: req.body.name,
60 password: crypto.createHash('sha256').update(req.body.password).digest('base64'),
61 email: req.body.email,
62 role: req.body.role
63 });
64 chef.save(function (err, chef) {
65 if (err) return res.send(500, err.message);
66 res.status(200).jsonp(chef);
67 });
68};
69
70/** POST '/chefs/login' **/
71exports.login = function (req, res) {
72 userModel.findOne({
73 email: req.body.email
74 })
75 .select('+password')
76 .exec(function (err, chef) {
77 if (err) throw err;
78 if (!chef) {
79 res.json({success: false, message: 'Authentication failed. chef not found.'});
80 } else if (chef) {
81 req.body.password = crypto.createHash('sha256').update(req.body.password).digest('base64');
82 if (chef.password != req.body.password) {
83 res.json({success: false, message: 'Authentication failed. Wrong password.'});
84 } else {
85 var indexToken = -1;
86 for (var i = 0; i < chef.tokens.length; i++) {
87 if (chef.tokens[i].userAgent == req.body.userAgent) {
88 indexToken = JSON.parse(JSON.stringify(i));
89 }
90 }
91 console.log(indexToken);
92 if (indexToken == -1) {//userAgent no exist
93
94 var tokenGenerated = jwt.sign({foo: 'bar'}, app.get('superSecret'), {
95 // expiresIn: 86400 // expires in 24 hours
96 });
97 var newToken = {
98 userAgent: req.body.userAgent,
99 token: tokenGenerated
100 };
101 chef.tokens.push(newToken);
102 } else {//userAgent already exist
103 chef.tokens[indexToken].token = "";
104
105 var tokenGenerated = jwt.sign({foo: 'bar'}, app.get('superSecret'), {
106 // expiresIn: 86400 // expires in 24 hours
107 });
108 chef.tokens[indexToken].token = tokenGenerated;
109 }
110 chef.save(function (err, chef) {
111 if (err) return res.send(500, err.message);
112
113 // return the information including token as JSON
114 chef.password = "";
115 res.json({
116 user: chef,
117 success: true,
118 message: 'Enjoy your token!',
119 token: tokenGenerated
120 });
121 });
122 }
123 }
124 });
125};