openworktime/controllers/userController.js
controllers/userController.jsRaw
1//File: controllers/userController.js
2var mongoose = require('mongoose');
3var userModel = mongoose.model('userModel');
4
5/* */
6var jwt = require('jsonwebtoken'); // used to create, sign, and verify tokens
7var express = require("express");
8var app = express();
9var config = require('../config'); // get our config file
10app.set('superSecret', config.secret); // secret variable
11/* */
12
13//GET - Return all Users in the DB
14exports.findAllUsers = function(req, res) {
15 userModel.find(function(err, users) {
16 if(err) res.send(500, err.message);
17
18 //password deletion
19 for(var i=0; i<users.length; i++)
20 {
21 users[i].password="";
22 console.log(users[i].password);
23 }
24
25 console.log('GET /users');
26 res.status(200).jsonp(users);
27 });
28};
29
30//GET - Return a User with specified ID
31exports.findById = function(req, res) {
32 userModel.findById(req.params.id, function(err, user) {
33 if(err) return res.send(500, err.message);
34
35 console.log('GET /users/' + req.params.id);
36 //password deletion
37
38 user.password="";
39 res.status(200).jsonp(user);
40 });
41};
42
43exports.findUserByUsername = function(req, res) {
44 userModel.find({
45 username: req.params.username
46 }, function(err, user) {
47
48 if (err) throw err;
49
50 if (!user) {
51 res.json({ success: false, message: 'no user found' });
52 } else if (user) {
53 // return the information including token as JSON
54 //res.jsonp(user);
55 user.password="";
56 //console.log(user);
57 res.status(200).jsonp(user[0]);
58
59
60 }
61
62 });
63};
64exports.findLoggedUserByUsername = function(req, res) {
65 userModel.find({
66 username: req.params.username
67 }, function(err, user) {
68 if (err) throw err;
69 if (!user) {
70 res.json({ success: false, message: 'no user found' });
71 } else if (user) {
72 //console.log(user[0]);
73 //res.status(200).jsonp(user[0]);
74 user[0].connected= true;
75 user[0].lastConnection= new Date(); //adds the last connection time
76 user[0].save(function(err) {
77 if(err) return res.send(500, err.message);
78
79 user[0].password="";
80 res.status(200).jsonp(user[0]);
81 });
82 }
83 });
84};
85
86//POST - Insert a new User in the DB
87exports.addUser = function(req, res) {
88 console.log('POST new user, name: ' + req.body.username);
89 //console.log(req.body);
90
91 var user = new userModel({
92 username: req.body.username,
93 password: req.body.password,
94 description: req.body.description,
95 mail: req.body.mail,
96 avatar: req.body.avatar,
97 github: req.body.github,
98 web: req.body.web,
99 projects: req.body.projects,
100 connected: req.body.connected
101 });
102
103 user.save(function(err, user) {
104 if(err) return res.send(500, err.message);
105 res.status(200).jsonp(user);
106 });
107};
108
109//PUT - Update a user already exists
110exports.updateUser = function(req, res) {
111 userModel.findById(req.params.id, function(err, user) {
112 user.username = req.body.username;
113 user.password = req.body.password;
114 user.description = req.body.description;
115 user.avatar = req.body.avatar;
116 user.mail = req.body.mail;
117 user.phone = req.body.phone;
118 user.telegram = req.body.telegram;
119
120 user.save(function(err) {
121 if(err) return res.send(500, err.message);
122 user.password="";
123 res.status(200).jsonp(user);
124 });
125 });
126};
127
128//DELETE - Delete a user with specified ID
129exports.deleteUser = function(req, res) {
130 userModel.findById(req.params.id, function(err, user) {
131 user.remove(function(err) {
132 if(err) return res.send(500, err.message);
133 res.status(200).jsonp(req.params.id);
134 console.log('DELETE /users/' + req.params.id);
135 })
136 });
137};
138
139
140//POST - auth user
141exports.login = function(req, res) {
142 // find the user
143 userModel.findOne({
144 username: req.body.username
145 }, function(err, user) {
146
147 if (err) throw err;
148
149 if (!user) {
150 res.json({ success: false, message: 'Authentication failed. User not found.' });
151 } else if (user) {
152
153 // check if password matches
154 if (user.password != req.body.password) {
155 res.json({ success: false, message: 'Authentication failed. Wrong password.' });
156 } else {
157
158 // if user is found and password is right
159 // create a token
160 var token = jwt.sign(user, app.get('superSecret'), {
161 //expiresInMinutes: 1440 // expires in 24 hours
162 expiresIn: '60m'
163 });
164 //console.log(user);
165
166 //update connected=true
167
168 user.connected= true;
169 user.save(function(err) {
170 if(err) return res.send(500, err.message);
171 });
172 // return the information including token as JSON
173 res.json({
174 success: true,
175 message: 'Enjoy your token!',
176 token: token,
177 user: user
178 });
179 }
180
181 }
182
183 });
184};
185
186exports.logout = function(req, res) {
187 // find the user
188 userModel.findOne({
189 username: req.body.username
190 }, function(err, user) {
191
192 if (err) throw err;
193
194 if (!user) {
195 res.json({ success: false, message: 'Authentication failed. User not found.' });
196 } else if (user) {
197
198
199 //update connected=true
200 user.connected= false;
201 user.save(function(err) {
202 if(err) return res.send(500, err.message);
203
204 // return the information including token as JSON
205 res.json({
206 success: true,
207 message: 'logged out'
208 });
209 });
210
211 }
212
213 });
214};