commonroutesServer/controllers/adminController.js
controllers/adminController.jsRaw
1//File: controllers/userController.js
2var mongoose = require('mongoose');
3var adminModel = mongoose.model('adminModel');
4var userModel = mongoose.model('userModel');
5var travelModel = mongoose.model('travelModel');
6
7var config = require('../config');
8var pageSize = config.pageSize;
9
10/* */
11var jwt = require('jsonwebtoken'); // used to create, sign, and verify tokens
12var express = require("express");
13var app = express();
14var config = require('../config'); // get our config file
15app.set('superSecret', config.secret); // secret variable
16
17var crypto = require('crypto');
18/* */
19
20var request = require('request');
21
22
23//POST - Insert a new User in the DB
24exports.signup = function(req, res) {
25 //get random avatar
26 var r = getRand(1, 10);
27 randAvatar = getAvatar(r);
28
29
30 var user = new userModel({
31 username: req.body.username,
32 password: crypto.createHash('sha256').update(req.body.password).digest('base64'),
33 description: req.body.description,
34 avatar: randAvatar,
35 email: req.body.email,
36 phone: req.body.phone,
37 telegram: req.body.telegram
38 });
39 if (user.username == undefined) {
40 return res.status(500).jsonp("empty inputs");
41 } else if (user.password == undefined) {
42 return res.status(500).jsonp("empty inputs");
43 } else if (user.email == undefined) {
44 return res.status(500).jsonp("empty inputs");
45 }
46
47 user.save(function(err, user) {
48 if (err) return res.send(500, err.message);
49
50 exports.login(req, res);
51 });
52};
53
54
55//POST - auth user
56exports.login = function(req, res) {
57 // find the user
58 adminModel.findOne({
59 username: req.body.username
60 })
61 .select('+password')
62 .exec(function(err, user) {
63
64 if (err) throw err;
65
66 if (!user) {
67 res.json({
68 success: false,
69 message: 'Authentication failed. User not found.'
70 });
71 } else if (user) {
72
73 req.body.password = crypto.createHash('sha256').update(req.body.password).digest('base64');
74
75 // check if password matches
76 if (user.password != req.body.password) {
77 res.json({
78 success: false,
79 message: 'Authentication failed. Wrong password.'
80 });
81 } else {
82
83 // if user is found and password is right
84 // create a token
85 var token = jwt.sign({
86 foo: 'bar'
87 }, app.get('superSecret'), {
88 //expiresInMinutes: 1440 // expires in 24 hours
89 //expiresIn: '60m'
90 });
91 user.token = token;
92 user.save(function(err, user) {
93 if (err) return res.send(500, err.message);
94 //res.status(200).jsonp(travel);
95 console.log(user);
96 // return the information including token as JSON
97 user.password = "";
98 res.json({
99 success: true,
100 message: 'Enjoy your token!',
101 token: token,
102 user: user
103 });
104 });
105
106 }
107
108 }
109
110 });
111};
112exports.changePassword = function(req, res) {
113 //if(req.body.)
114 userModel.update({
115 'token': req.headers['x-access-token']
116 }, req.body,
117 function(err) {
118 if (err) return console.log(err);
119 exports.getUserByToken(req, res);
120 });
121};
122
123function isNodeInNodes(node, nodes){
124 for (var i=0; i<nodes.length; i++){
125 if (node.title==nodes[i].title){
126 return(i);
127 }
128 }
129 return(-1);
130}
131exports.network = function(req, res) {
132 userModel.find()
133 .limit(pageSize)
134 .skip(pageSize * Number(req.query.page))
135 .lean()
136 //.populate({path: 'travels', populate: {path: 'joins', populate: {path: 'username'}}})
137 .populate('travels', 'title type joins')
138 .populate('likes', 'username avatar')
139 .exec(function(err, users) {
140 if (err) return res.send(500, err.message);
141
142 /*res.status(200).jsonp(users);*/
143 var nodes=[];
144 var edges=[];
145 for (var i=0; i<users.length; i++){
146 var node = {
147 title: users[i].username,
148 label: users[i].username,
149 image: users[i].avatar,
150 shape: "image",
151 id: users[i]._id,
152 group: users[i]._id
153 };
154 var lNode = isNodeInNodes(node, nodes);
155 if (lNode<0){
156 nodes.push(node);
157 var uNode = nodes.length -1;
158 }
159 for(var j=0; j<users[i].likes.length; j++){
160 /*console.log(i + ", " + j);
161 console.log(nodes);*/
162 var node = {
163 title: users[i].likes[j].username,
164 label: users[i].likes[j].username,
165 image: users[i].likes[j].avatar,
166 shape: "image",
167 id: users[i].likes[j]._id
168 };
169 var lNode = isNodeInNodes(node, nodes);
170 if (lNode<0){
171 //node no exist
172 nodes.push(node);
173 lNode = nodes.length -1;
174 }else{
175 //node already exist
176
177 }
178 var edge={
179 from: users[i]._id,
180 to: users[i].likes[j]._id,
181 arrows: "to",
182 color: {
183 color: "#E57373"//red300
184 }
185 };
186 edges.push(edge);
187 }
188 for(var j=0; j<users[i].travels.length; j++){
189 /*console.log(i + ", " + j);
190 console.log(nodes);*/
191 var node = {
192 title: users[i].travels[j].title,
193 label: users[i].travels[j].title,
194 image: "img/" + users[i].travels[j].type + ".png",
195 shape: "image",
196 id: users[i].travels[j]._id,
197 value: "0.5",
198 group: users[i]._id
199 };
200 var lNode = isNodeInNodes(node, nodes);
201 if (lNode<0){
202 //node no exist
203 nodes.push(node);
204 lNode = nodes.length -1;
205 }else{
206 //node already exist
207
208 }
209 var edge={
210 from: users[i]._id,
211 to: users[i].travels[j]._id
212 };
213 edges.push(edge);
214
215 //users joining travels
216 /*for(var k=0; k<users[i].travels[j].joins.length; k++){
217 var node = {
218 title: users[i].travels[j].joins[k].username,
219 label: users[i].travels[j].joins[k].username,
220 image: users[i].travels[j].joins[k].avatar,
221 shape: "image",
222 id: users[i].travels[j].joins[k]._id
223 };
224 var lNode = isNodeInNodes(node, nodes);
225 if (lNode<0){
226 //node no exist
227 nodes.push(node);
228 lNode = nodes.length -1;
229 }
230 var edge={
231 from: users[i].travels[j].joins[k]._id,
232 to: users[i].travels[j]._id,
233 color: {
234 color: "#4DD0E1"//cyan300
235 }
236 };
237 edges.push(edge);
238 }*/
239 }
240
241 }
242 var resp = {
243 nodes: nodes,
244 edges: edges
245 };
246 res.status(200).jsonp(resp);
247 });
248};