commonroutesServer/controllers/userController.js
controllers/userController.jsRaw
1//File: controllers/userController.js
2var mongoose = require('mongoose');
3var userModel = mongoose.model('userModel');
4
5var md5 = require('md5');
6
7/* */
8var jwt = require('jsonwebtoken'); // used to create, sign, and verify tokens
9var express = require("express");
10var app = express();
11var config = require('../config'); // get our config file
12app.set('superSecret', config.secret); // secret variable
13/* */
14
15//GET - Return all Users in the DB
16exports.findAllUsers = function(req, res) {
17 userModel.find(function(err, users) {
18 if(err) res.send(500, err.message);
19
20 //password deletion
21 for(var i=0; i<users.length; i++)
22 {
23 users[i].password="";
24 users[i].token="";
25 console.log(users[i].password);
26 }
27
28 console.log('GET /users');
29 res.status(200).jsonp(users);
30 });
31};
32
33//GET - Return a User with specified ID
34exports.findById = function(req, res) {
35 userModel.findById(req.params.id, function(err, user) {
36 if(err) return res.send(500, err.message);
37
38 console.log('GET /users/' + req.params.id);
39 //password deletion
40 if(user!=null){
41 user.password="";
42 users.token="";
43 }
44 res.status(200).jsonp(user);
45 });
46};
47
48exports.findUserByUsername = function(req, res) {
49 userModel.find({
50 username: req.params.username
51 }, function(err, user) {
52
53 if (err) throw err;
54
55 if (!user) {
56 res.json({ success: false, message: 'no user found' });
57 } else if (user) {
58 // return the information including token as JSON
59 //res.jsonp(user);
60 user.password="";
61 users.token="";
62 console.log(user);
63 res.status(200).jsonp(user[0]);
64
65
66 }
67
68 });
69};
70
71//POST - Insert a new User in the DB
72exports.addUser = function(req, res) {
73 console.log('POST new user, name: ' + req.body.username);
74 //console.log(req.body);
75
76 var user = new userModel({
77 username: req.body.username,
78 password: md5(req.body.password),
79 description: req.body.description,
80 avatar: req.body.avatar,
81 mail: req.body.mail,
82 phone: req.body.phone,
83 telegram: req.body.telegram
84 });
85 if(user.username==undefined)
86 {
87 return res.status(500).jsonp("empty inputs");
88 }else if(user.password==undefined)
89 {
90 return res.status(500).jsonp("empty inputs");
91 }else if(user.description==undefined)
92 {
93 return res.status(500).jsonp("empty inputs");
94 }else if(user.avatar==undefined)
95 {
96 return res.status(500).jsonp("empty inputs");
97 }else if(user.mail==undefined)
98 {
99 return res.status(500).jsonp("empty inputs");
100 }
101
102 user.save(function(err, user) {
103 if(err) return res.send(500, err.message);
104 res.status(200).jsonp(user);
105 });
106};
107
108/* fav */
109exports.addFav = function(req, res) {
110 var tokenuser;
111 userModel.find({
112 token: req.headers['x-access-token']
113 }, function(err, users){
114 tokenuser=users[0];
115 });
116 userModel.findById(req.params.userId, function(err, user){
117
118 // first search if user have already said like
119 var favRepeated=false;
120 for(var i=0; i<user.favs.length; i++)
121 {
122 if(user.favs[i].username==tokenuser.username)
123 {
124 favRepeated=true;
125 }
126 }
127 console.log("favRepeated: " + favRepeated);
128 if(favRepeated==false)
129 {
130 var fav = {
131 userId: tokenuser._id,
132 username: tokenuser.username,
133 avatar: tokenuser.avatar
134 };
135 user.favs.push(fav);
136
137 user.save(function(err, user) {
138 if(err) return res.send(500, err.message);
139 //res.status(200).jsonp(travel);
140 userModel.find(function(err, users) {
141 if(err) res.send(500, err.message);
142 res.status(200).jsonp(users);
143 });
144 });
145 }else{
146 userModel.find(function(err, users) {
147 if(err) res.send(500, err.message);
148 res.status(200).jsonp(users);
149 });
150 }
151
152 });
153};
154exports.doUnfav = function(req, res) {
155 var tokenuser;
156 userModel.find({
157 token: req.headers['x-access-token']
158 }, function(err, users){
159 tokenuser=users[0];
160 });
161
162 userModel.findById(req.params.userId, function(err, user){
163 for(var i=0; i<user.favs.length; i++)
164 {
165 if(user.favs[i].username==tokenuser.username)
166 {
167 user.favs.splice(i, 1);
168 }
169 }
170
171 user.save(function(err, travel) {
172 if(err) return res.send(500, err.message);
173 //res.status(200).jsonp(travel);
174 userModel.find(function(err, users) {
175 if(err) res.send(500, err.message);
176 res.status(200).jsonp(users);
177 });
178 });
179 });
180};
181
182//PUT - Update a user already exists
183exports.updateUser = function(req, res) {
184 userModel.findById(req.params.id, function(err, user) {
185 user.username = req.body.username;
186 user.password = md5(req.body.password);
187 user.description = req.body.description;
188 user.avatar = req.body.avatar;
189 user.mail = req.body.mail;
190 user.phone = req.body.phone;
191 user.telegram = req.body.telegram;
192
193 user.save(function(err) {
194 if(err) return res.send(500, err.message);
195 user.password="";
196 users.token="";
197 res.status(200).jsonp(user);
198 });
199 });
200};
201
202//DELETE - Delete a user with specified ID
203exports.deleteUser = function(req, res) {
204 userModel.findById(req.params.id, function(err, user) {
205 user.remove(function(err) {
206 if(err) return res.send(500, err.message);
207 res.status(200).jsonp(req.params.id);
208 console.log('DELETE /users/' + req.params.id);
209 })
210 });
211};
212
213
214//POST - auth user
215exports.login = function(req, res) {
216 // find the user
217 userModel.findOne({
218 username: req.body.username
219 }, function(err, user) {
220
221 if (err) throw err;
222
223 if (!user) {
224 res.json({ success: false, message: 'Authentication failed. User not found.' });
225 } else if (user) {
226
227 req.body.password=md5(req.body.password);
228
229 // check if password matches
230 if (user.password != req.body.password) {
231 res.json({ success: false, message: 'Authentication failed. Wrong password.' });
232 } else {
233
234 // if user is found and password is right
235 // create a token
236 var token = jwt.sign(user, app.get('superSecret'), {
237 //expiresInMinutes: 1440 // expires in 24 hours
238 //expiresIn: '60m'
239 });
240 user.token=token;
241 user.save(function(err, user) {
242 if(err) return res.send(500, err.message);
243 //res.status(200).jsonp(travel);
244 console.log(user);
245 // return the information including token as JSON
246 user.password="";
247 res.json({
248 success: true,
249 message: 'Enjoy your token!',
250 token: token,
251 avatar: user.avatar,
252 userid: user._id,
253 userdata: user
254 });
255 });
256
257 }
258
259 }
260
261 });
262};