exports.register = function(user_name,phone_number,email,password,gcm_id,callback) { //var x = email; //if(!(x.indexOf("@")<1 || x.lastIndexOf(".")<x.indexOf("@")+2 || x.lastIndexOf(".")+2>=x.length)){ //if (password.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/) && password.length > 4 && password.match(/[0-9]/) && password.match(/.[!,@,#,$,%,^,&,*,?,_,~]/)) { //console.log('user_name ' + user_name+' phone_number '+phone_number+' email '+ email+ ' password '+ password ); var temp =rand(160, 36); var newpass = temp + password; var token = crypto.createHash('sha512').update(aavara +rand).digest("hex"); var hashed_password = crypto.createHash('sha512').update(newpass).digest("hex"); var newuser = new models.User({ token: token, user_name: user_name, phone_number: phone_number, email: email, gcm_id : gcm_id, shared_location : "1", allowed_to_post : "1", upvotes : 0, downvotes : 0, //history: JSON.parse(history), //location : [lat, long], hashed_password: hashed_password, salt :temp }); newuser.save(function (err) { console.log("here we go"); callback({'response' : "Succesfully registered !"}); }); /*models.User.find({phone_number: phone_number},function(err,users){ var len = users.length; if(len == 0){ callback({'response':"yes"}); }else{ callback({'response':"no"}); } }); }else{ callback({'response':"Password Weak"}); } }else{ callback({'response':"Email Not Valid"}); }*/ }
app.post('/allContacts',function(req,res){ models.User.find({},function(err,reports){ console.log(reports); res.json(reports); }); });
models.User.find({email: email},function(err,users){ if(users.length != 0){ models.User.findOne({ email: email }, function (err, doc){ doc.temp_str= temp; doc.save(); var mailOptions = { from: "*****@*****.**", to: email, subject: "Reset Password ", text: "Hello "+email+". Code to reset your Password is "+temp+".\n\nRegards,\nTeam Travey.", } smtpTransport.sendMail(mailOptions, function(error, response){ if(error){ callback({'response':"Error While Resetting password. Try Again !",'res':false}); console.log(response + email); }else{ callback({'response':"Check your Email and enter the verification code to reset your Password.",'res':true}); } }); }); }else{ callback({'response':"Email Does not Exists.",'res':false}); } });
app.post('/setGcmid',function(req,res){ models.User.find({phone_number: req.body.phone_number},function(err,reports){ reports[0].gcm_id = req.body.gcm_id; reports[0].save(); console.log(reports); res.json(reports); }); });
app.post('/leaderBoard',function(req,res) { var options = { "limit": 20, "sort": [['upvotes', 'desc'], ['downvotes', 'asc']] }; models.User.find({}, function (err, docs) { console.log("retrieved records:"); console.log(docs); res.json(docs); }); });
models.Report.find({_id:report_id},function(error, reports){ if(delet == 1){ var a = reports[0].upvotes; reports[0].upvotes=a-1; } var b = reports[0].downvotes; reports[0].downvotes=b+1; reports[0].save(function(err,resp) { if(err) { console.log(err); } else { callback({'res' : true}); console.log("done"); } }); //User got downvoted var phone_number=reports[0].phone_number; var ban = 0; var g_id; models.User.find({phone_number:phone_number},function(err,users2){ console.log(users2[0]); var down=users2[0].downvotes; if(delet == 1){ var c = users2[0].upvotes; users2[0].upvotes=c-1; } users2[0].downvotes=down+1; if (users2[0].downvotes - users2[0].upvotes > 9 ){ users2[0].allowed_to_post = "0"; ban = 1; g_id = users2[0].gcm_id; } users2[0].save(function(err,resp) { if(err) { console.log(err); } else { //users downvoted_report get one id of downvoted event users[0].downvoted_posts.push(report_id); users[0].save(); callback({'res' : true}); console.log("done"); } }); }); });
app.post('/ckeckExistNumber', function(req, res){ models.User.find({phone_number: req.body.phone_number},function(err,users){ var len = users.length; if(len == 0){ res.json({'response':"yes"}); }else{ res.json({'response':"no"}); } }); });
exports.historyAdd = function(phone_number,history,callback) { models.User.update( { phone_number: phone_number }, { $push: { history: history } } ); console.log("history added"); callback({'response':"History updated succesfully",'res':false}); }
app.post('/shareLocation',function(req,res){ models.User.find({'phone_number': req.body.phone_number}, function(error,reports){ var fromu = reports[0].user_name; var fromn = "req.body.fromn"; var title = phone_number; requests.send(fromn, fromu, title,reports[0].gcm_id, function (found) { console.log("location send"); res.json(found); }); //res.json(reports[0].location); }); });
app.post('/shareLocationWithFriend', function(req, res){ models.User.find({phone_number : req.body.phone_number}, function(err, users){ var fromu = "req.body.phone_number"; var fromn = "req.body.fromn"; var title = "Share your location to"+ req.body.user_name; requests.send(fromn, fromu, title,users[0].gcm_id, function (found) { console.log(users[0].phone_number ); console.log(users[0].gcm_id); console.log(found); res.json(found); }); //res.json(users[0].image); //console.log(users[0].image); }); });
exports.cpass = function(id,opass,npass,callback) { var temp1 =rand(160, 36); var newpass1 = temp1 + npass; var hashed_passwordn = crypto.createHash('sha512').update(newpass1).digest("hex"); models.User.find({token: id},function(err,users){ if(users.length != 0){ var temp = users[0].salt; var hash_db = users[0].hashed_password; var newpass = temp + opass; var hashed_password = crypto.createHash('sha512').update(newpass).digest("hex"); if(hash_db == hashed_password){ if (npass.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/) && npass.length > 4 && npass.match(/[0-9]/) && npass.match(/.[!,@,#,$,%,^,&,*,?,_,~]/)) { models.User.findOne({ token: id }, function (err, doc){ doc.hashed_password = hashed_passwordn; doc.salt = temp1; doc.save(); callback({'response':"Password Sucessfully Changed",'res':true}); }); }else{ callback({'response':"New Password is Weak. Try a Strong Password !",'res':false}); } }else{ callback({'response':"Passwords do not match. Try Again !",'res':false}); } }else{ callback({'response':"Error while changing password",'res':false}); } }); }
app.post('/getLocation',function(req,res){ models.User.find({'phone_number': req.body.phone_number}, function(error,reports){ if(reports[0].shared_location == "1"){ res.json(reports[0].location); }else{ var fromu = "req.body.phone_number"; var fromn = "req.body.fromn"; var title = "Share your location"; requests.send(fromn, fromu, title,reports[0].gcm_id, function (found) { console.log("location send"); res.json(found); }); } res.json(); }); });
models.Report.find({_id:report_id},function(error, reports){ if(delet == 1){ var b = reports[0].downvotes; reports[0].downvotes=b-1; } var a = reports[0].upvotes; reports[0].upvotes=a+1; reports[0].save(function(err,resp) { if(err) { console.log(err); } else { callback({'res' : true}); console.log("done"); } }); //User got upvoted var phone_number=reports[0].phone_number; models.User.find({phone_number:phone_number},function(err,users2){ console.log(users2[0]); var up=users2[0].upvotes; if(delet == 1){ var c = users2[0].downvotes; users2[0].downvotes=c-1; } users2[0].upvotes=up+1; users2[0].save(function(err,resp) { if(err) { console.log(err); } else { //users upvoted_report get one id of upvoted event users[0].upvoted_posts.push(report_id); users[0].save(); callback({'res' : true}); console.log("done"); } }); }); });
newReport.save(function (err) { callback({'response':"Sucessful"}); var query = models.User.find({'location': { $near: [lat,long], $maxDistance: distance } }); query.exec(function (err, city) { if (err) { console.log(err); throw err; } else{ for (var i = city.length - 1; i >= 0; i--) { var fromu = "req.body.from"; var fromn = "req.body.fromn"; var title = tag; requests.send(fromn, fromu, title,city[i].gcm_id, function (found) { console.log("hii"); //res.json(found); }); } console.log('Cant save: Found city:' + city); } }); console.log("Added"); });
app.post('/friendsNearBy',function(req,res){ var query = models.User.find({'location': { $near: [req.body.lat,req.body.long], $maxDistance: distance } }); query.exec(function (err, city) { if (err) { console.log(err+ "what is this"); throw err; } else { console.log('hi this is friends near by '+ city); res.json(city); } }); });
exports.historyAdd = function(phone_number,history,callback) { /*models.User.update( { phone_number: phone_number }, { $push: { history: JSON.parse(history) } } );*/ models.User.find({phone_number: phone_number},function(err,reports){ reports[0].history.push(JSON.parse(history)); reports[0].save(); callback({'response':"History updated succesfully",'res':true}); console.log("history added"); }); //console.log("history added"); //callback({'response':"History updated succesfully",'res':true}); }
exports.respass_chg = function(email,code,npass,callback) { models.User.find({email: email},function(err,users){ if(users.length != 0){ var temp = users[0].temp_str; var temp1 =rand(160, 36); var newpass1 = temp1 + npass; var hashed_password = crypto.createHash('sha512').update(newpass1).digest("hex"); if(temp == code){ if (npass.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/) && npass.length > 4 && npass.match(/[0-9]/) && npass.match(/.[!,@,#,$,%,^,&,*,?,_,~]/)) { models.User.findOne({ email: email }, function (err, doc){ doc.hashed_password= hashed_password; doc.salt = temp1; doc.temp_str = ""; doc.save(); callback({'response':"Password Sucessfully Changed",'res':true}); }); }else{ callback({'response':"New Password is Weak. Try a Strong Password !",'res':false}); } }else{ callback({'response':"Code does not match. Try Again !",'res':false}); } }else{ callback({'response':"Error",'res':true}); } }); }
exports.downvote = function(phone_number,report_id,callback) { var checked = 0; var delet = 0; models.User.find({phone_number : phone_number},function(error, users){ //Checking if report id downvoted before? for (var i = users[0].downvoted_posts.length - 1; i >= 0; i--) { if(users[0].downvoted_posts[i] == report_id){ callback({'res' : false,'ban': false}); console.log({'response' : "Can only downvote once"}); checked = 1; } } //deleting id of upvoted report for (var i = users[0].upvoted_posts.length - 1; i >= 0; i--) { if(users[0].upvoted_posts[i] == report_id){ users[0].upvoted_posts.splice(i, 1); delet = 1; } } if(checked == 0){ //report got downvoted models.Report.find({_id:report_id},function(error, reports){ if(delet == 1){ var a = reports[0].upvotes; reports[0].upvotes=a-1; } var b = reports[0].downvotes; reports[0].downvotes=b+1; reports[0].save(function(err,resp) { if(err) { console.log(err); } else { callback({'res' : true}); console.log("done"); } }); //User got downvoted var phone_number=reports[0].phone_number; var ban = 0; var g_id; models.User.find({phone_number:phone_number},function(err,users2){ console.log(users2[0]); var down=users2[0].downvotes; if(delet == 1){ var c = users2[0].upvotes; users2[0].upvotes=c-1; } users2[0].downvotes=down+1; if (users2[0].downvotes - users2[0].upvotes > 9 ){ users2[0].allowed_to_post = "0"; ban = 1; g_id = users2[0].gcm_id; } users2[0].save(function(err,resp) { if(err) { console.log(err); } else { //users downvoted_report get one id of downvoted event users[0].downvoted_posts.push(report_id); users[0].save(); callback({'res' : true}); console.log("done"); } }); }); }); callback({'res' : true}); } //callback({'res' : false}); }); }
app.post('/history', function(req,res){ models.User.find({phone_number : req.body.phone_number}, function(err, users){ res.json(users[0]); }); });
exports.login = function(phone_number,password,gcm_id,callback) { models.User.find({phone_number: phone_number},function(err,users){ if(users.length != 0){ var temp = users[0].salt; var hash_db = users[0].hashed_password; var id = users[0].token; var email = users[0].email; var u_name = users[0].user_name; var newpass = temp + password; var shared_location = users[0].shared_location; var hashed_password = crypto.createHash('sha512').update(newpass).digest("hex"); var grav_url = gravatar.url(users[0].email, {s: '200', r: 'pg', d: '404'}); users[0].gcm_id = gcm_id; users[0].save(); console.log(users[0].gcm_id + gcm_id); if(hash_db == hashed_password){ callback({'response':"Login Sucess",'res':true,'token':id,'grav':grav_url,'email': email,'user_name':u_name,'shared_location': shared_location}); }else{ callback({'response':"Invalid Password",'res':false}); } }else { callback({'response':"User not exist",'res':false}); } }); }
app.post('/getImage', function(req, res){ models.User.find({phone_number : req.body.phone_number}, function(err, users){ res.json(users[0].image); //console.log(users[0].image); }); });