diff --git a/config.js b/config.js index 7b004bc..e1b6c0a 100644 --- a/config.js +++ b/config.js @@ -1,8 +1,8 @@ module.exports = { - 'secret': process.env.SECRET,// production version - 'database': process.env.MONGO_DSN, - /*'secret': 'secretfortoken',// local version - 'database': 'mongodb://localhost/comunalcar',*/ + /*'secret': process.env.SECRET,// production version + 'database': process.env.MONGO_DSN,*/ + 'secret': 'secretfortoken',// local version + 'database': 'mongodb://localhost/carsincommon', "port" : process.env.PORT || 3000 }; diff --git a/controllers/userController.js b/controllers/userController.js index e110394..4c93479 100644 --- a/controllers/userController.js +++ b/controllers/userController.js @@ -1,277 +1,271 @@ //File: controllers/userController.js var mongoose = require('mongoose'); -var userModel = mongoose.model('userModel'); +var userModel = mongoose.model('userModel'); -var md5 = require('md5'); /* */ -var jwt = require('jsonwebtoken'); // used to create, sign, and verify tokens -var express = require("express"); -var app = express(); +var jwt = require('jsonwebtoken'); // used to create, sign, and verify tokens +var express = require("express"); +var app = express(); var config = require('../config'); // get our config file app.set('superSecret', config.secret); // secret variable var crypto = require('crypto'); /* */ +//POST - Insert a new User in the DB +exports.addUser = function(req, res) { + console.log('POST new user, name: ' + req.body.username); + //console.log(req.body); + + var user = new userModel({ + username: req.body.username, + password: crypto.createHash('sha256').update(req.body.password).digest('base64'), + description: req.body.description, + avatar: req.body.avatar, + mail: req.body.mail, + phone: req.body.phone, + telegram: req.body.telegram + }); + if (user.username == undefined) { + return res.status(500).jsonp("empty inputs"); + } else if (user.password == undefined) { + return res.status(500).jsonp("empty inputs"); + } else if (user.mail == undefined) { + return res.status(500).jsonp("empty inputs"); + } + + user.save(function(err, user) { + if (err) return res.send(500, err.message); + + exports.login(req, res); + }); +}; + + +//POST - auth user +exports.login = function(req, res) { + // find the user + userModel.findOne({ + username: req.body.username + }, function(err, user) { + + if (err) throw err; + + if (!user) { + res.json({ + success: false, + message: 'Authentication failed. User not found.' + }); + } else if (user) { + + req.body.password = crypto.createHash('sha256').update(req.body.password).digest('base64'); + + // check if password matches + if (user.password != req.body.password) { + res.json({ + success: false, + message: 'Authentication failed. Wrong password.' + }); + } else { + + // if user is found and password is right + // create a token + var token = jwt.sign(user, app.get('superSecret'), { + //expiresInMinutes: 1440 // expires in 24 hours + //expiresIn: '60m' + }); + user.token = token; + user.save(function(err, user) { + if (err) return res.send(500, err.message); + //res.status(200).jsonp(travel); + console.log(user); + // return the information including token as JSON + user.password = ""; + res.json({ + success: true, + message: 'Enjoy your token!', + token: token, + user: user + }); + }); + + } + + } + + }); +}; + //GET - Return all Users in the DB exports.findAllUsers = function(req, res) { - userModel.find(function(err, users) { - if(err) res.send(500, err.message); - - //password deletion - for(var i=0; i