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 //fav
131 var fav = {
132 userId: tokenuser._id,
133 username: tokenuser.username,
134 avatar: tokenuser.avatar
135 };
136 user.favs.push(fav);
137
138 //notification
139 var notification = {
140 type: "fav",
141 otherusername: tokenuser.username,
142 description: "user "+tokenuser.username+" favs you",
143 date: new Date(),
144 link: ""
145 };
146 user.notifications.push(notification);
147
148 user.save(function(err, user) {
149 if(err) return res.send(500, err.message);
150
151
152 //once saved, send the users json to client
153 userModel.find(function(err, users) {
154 if(err) res.send(500, err.message);
155 res.status(200).jsonp(users);
156 });
157 });
158 }else{
159 userModel.find(function(err, users) {
160 if(err) res.send(500, err.message);
161 res.status(200).jsonp(users);
162 });
163 }
164
165 });
166};
167exports.doUnfav = function(req, res) {
168 var tokenuser;
169 userModel.find({
170 token: req.headers['x-access-token']
171 }, function(err, users){
172 tokenuser=users[0];
173 });
174
175 userModel.findById(req.params.userId, function(err, user){
176 for(var i=0; i<user.favs.length; i++)
177 {
178 if(user.favs[i].username==tokenuser.username)
179 {
180 user.favs.splice(i, 1);
181 }
182 }
183
184 user.save(function(err, travel) {
185 if(err) return res.send(500, err.message);
186 //res.status(200).jsonp(travel);
187 userModel.find(function(err, users) {
188 if(err) res.send(500, err.message);
189 res.status(200).jsonp(users);
190 });
191 });
192 });
193};
194
195//PUT - Update a user already exists
196exports.updateUser = function(req, res) {
197 userModel.findById(req.params.id, function(err, user) {
198 user.username = req.body.username;
199 user.password = md5(req.body.password);
200 user.description = req.body.description;
201 user.avatar = req.body.avatar;
202 user.mail = req.body.mail;
203 user.phone = req.body.phone;
204 user.telegram = req.body.telegram;
205
206 user.save(function(err) {
207 if(err) return res.send(500, err.message);
208 user.password="";
209 users.token="";
210 res.status(200).jsonp(user);
211 });
212 });
213};
214
215//DELETE - Delete a user with specified ID
216exports.deleteUser = function(req, res) {
217 userModel.findById(req.params.id, function(err, user) {
218 user.remove(function(err) {
219 if(err) return res.send(500, err.message);
220 res.status(200).jsonp(req.params.id);
221 console.log('DELETE /users/' + req.params.id);
222 })
223 });
224};
225
226
227//POST - auth user
228exports.login = function(req, res) {
229 // find the user
230 userModel.findOne({
231 username: req.body.username
232 }, function(err, user) {
233
234 if (err) throw err;
235
236 if (!user) {
237 res.json({ success: false, message: 'Authentication failed. User not found.' });
238 } else if (user) {
239
240 req.body.password=md5(req.body.password);
241
242 // check if password matches
243 if (user.password != req.body.password) {
244 res.json({ success: false, message: 'Authentication failed. Wrong password.' });
245 } else {
246
247 // if user is found and password is right
248 // create a token
249 var token = jwt.sign(user, app.get('superSecret'), {
250 //expiresInMinutes: 1440 // expires in 24 hours
251 //expiresIn: '60m'
252 });
253 user.token=token;
254 user.save(function(err, user) {
255 if(err) return res.send(500, err.message);
256 //res.status(200).jsonp(travel);
257 console.log(user);
258 // return the information including token as JSON
259 user.password="";
260 res.json({
261 success: true,
262 message: 'Enjoy your token!',
263 token: token,
264 avatar: user.avatar,
265 userid: user._id,
266 userdata: user
267 });
268 });
269
270 }
271
272 }
273
274 });
275};