1
0
mirror of https://github.com/mainflux/mainflux.git synced 2025-04-27 13:48:49 +08:00

Move back to mongoose. Remove JWT.

Signed-off-by: Drasko DRASKOVIC <drasko.draskovic@gmail.com>
This commit is contained in:
Drasko DRASKOVIC 2016-04-19 23:09:16 +02:00
parent 41c1bc03b4
commit 129e911652
3 changed files with 75 additions and 78 deletions

View File

@ -1,11 +1,8 @@
var mongojs = require('mongojs');
var devicesDb = require('../database').collection('devices');
var jwt = require('jsonwebtoken');
var config = require('../../config/config');
var log = require('../logger');
var os = require('os');
var Device = require('../models/device');
/** createDevice() */
exports.createDevice = function(req, res, next) {
@ -14,29 +11,17 @@ exports.createDevice = function(req, res, next) {
console.log("req.headers['content-type'] = ", req.headers['content-type']);
/** Save the device and check for errors */
devicesDb.save(req.body, function(err, device) {
var device = new Device(); // create a new instance of the Device model
device.name = req.body.name; // set the device's name (comes from the request)
/** Save the device and check for errors */
device.save(function(err) {
if (err)
return next(err);
res.send(err);
var signaturePayload = {
version: config.version
}
var token = jwt.sign(signaturePayload, config.tokenSecret, {
subject: 'Device Auth Token',
issuer: req.headers.host,
audience: device._id.toString()
});
res.json({
status: 200,
message: 'Device created',
token: token,
_id: device._id.toString()
});
res.json(device);
return next();
});
return next();
}
/** getAllDevices() */
@ -44,11 +29,9 @@ exports.getAllDevices = function(req, res, next) {
console.log("req.headers['x-auth-token'] = ", req.headers['x-auth-token']);
log.info('hi');
devicesDb.find(req.body, function(err, devices) {
Device.find(function(err, devices) {
if (err)
return next(err);
res.send(err);
res.json(devices);
return next();
@ -58,15 +41,11 @@ exports.getAllDevices = function(req, res, next) {
/** getDevice() */
exports.getDevice = function(req, res, next) {
devicesDb.findOne({_id: mongojs.ObjectId(req.params.device_id)}, function(err, device) {
Device.findById(req.params.device_id, function(err, device) {
if (err)
return next(err);
res.send(err);
if (device) {
res.json(device);
} else {
res.send("NOT FOUND");
}
res.json(device);
return next();
});
}
@ -74,31 +53,34 @@ exports.getDevice = function(req, res, next) {
/** updateDevice() */
exports.updateDevice = function(req, res, next) {
/** Use our device model to find the device we want */
console.log(req.body);
devicesDb.update({
_id: mongojs.ObjectId(req.params.device_id)
},
{$set: req.body},
function(err, device) {
if (err)
return next(err);
Device.findById(req.params.device_id, function(err, device) {
if (err)
res.send(err);
res.send('OK');
device.name = req.body.name; // update the devices info
/** Save the device */
device.save(function(err) {
if (err)
res.send(err);
res.json(device);
return next();
});
});
}
/** deleteDevice() */
exports.deleteDevice = function(req, res, next) {
Device.remove({
_id: req.params.device_id
}, function(err, device) {
if (err)
res.send(err);
devicesDb.remove({
_id: mongojs.ObjectId(req.params.device_id)
}, function(err, device) {
if (err)
return next(err);
res.send('OK');
return next();
});
res.json(device);
return next();
});
}

View File

@ -16,7 +16,7 @@
"bunyan": "^1.5.1",
"jsonwebtoken": "~5.0.5",
"lodash": "~3.10.1",
"mongojs": "^1.4.1",
"mongoose": "^4.4.12",
"restify": "^4.0.3"
},
"devDependencies": {

View File

@ -6,11 +6,28 @@
* See the included LICENSE file for more details.
*/
var restify = require('restify');
var jwt = require('restify-jwt');
var domain = require('domain');
var config = require('./config/config');
var log = require('./app/logger');
// MongoDB
var mongoose = require('mongoose');
/**
* Connect to DB
*/
/** Check if we run with Docker compose */
var dockerMongo = process.env.MONGODB_NAME;
var dbUrl = '';
if (dockerMongo && dockerMongo == '/mainflux-api-docker/mongodb') {
dbUrl = 'mongodb://' + process.env.MONGODB_PORT_27017_TCP_ADDR + ':' + process.env.MONGODB_PORT_27017_TCP_PORT + '/' + config.db.name;
} else {
dbUrl = 'mongodb://' + config.db.addr + ':' + config.db.port + '/' + config.db.name;
}
mongoose.connect(dbUrl, {server:{auto_reconnect:true}});
/**
* RESTIFY
*/
@ -20,34 +37,15 @@ var server = restify.createServer({
name: "Mainflux"
});
server.pre(restify.pre.sanitizePath());
server.use(restify.acceptParser(server.acceptable));
server.use(restify.bodyParser());
server.use(restify.queryParser());
server.use(restify.authorizationParser());
console.log('Enabling CORS');
server.use(restify.CORS());
server.use(restify.fullResponse());
/** JWT */
server.use(jwt({
secret: config.tokenSecret,
requestProperty: 'token',
getToken: function fromHeaderOrQuerystring(req) {
var token = (req.body && req.body.access_token) ||
(req.query && req.query.access_token) ||
req.headers['x-auth-token'];
return token;
}
}).unless({
path: [
'/status',
{url: '/devices', methods: ['POST']}
]
}));
/** Global error handler */
server.use(function(req, res, next) {
var domainHandler = domain.create();
@ -80,9 +78,26 @@ route(server);
*/
var port = process.env.PORT || config.port;
console.log('Starting the server');
var banner = `
oocccdMMMMMMMMMWOkkkkoooolcclX
llc:::0MMMMMMMM0xxxxxdlllc:::d
lll:::cXMMMMMMXxxxxxxxdlllc:::
lllc:::cXMMMMNkxxxdxxxxolllc::
olllc:::oWMMNkxxxdloxxxxolllc: ## ## ### #### ## ## ######## ## ## ## ## ##
xolllc:::xWWOxxxdllloxxxxolllc ### ### ## ## ## ### ## ## ## ## ## ## ##
xxolllc:::x0xxxdllll:oxxxxllll #### #### ## ## ## #### ## ## ## ## ## ## ##
xxxolllc::oxxxxllll:::dxxxdlll ## ### ## ## ## ## ## ## ## ###### ## ## ## ###
xxxdllll:lxxxxolllc:::Okxxxdll ## ## ######### ## ## #### ## ## ## ## ## ##
0xxxdllloxxxxolllc:::OMNkxxxdl ## ## ## ## ## ## ### ## ## ## ## ## ##
W0xxxdllxxxxolllc:::xMMMXxxxxd ## ## ## ## #### ## ## ## ######## ####### ## ##
MWOxxxdxxxxdlllc:::oWMMMMKxxxx
MMWkxxxxxxdlllc:::oNMMMMMM0xxx
MMMXxxxxxdllllc::cXMMMMMMMWOxx
MMMM0xxxxolllc:::kMMMMMMMMMXxx
`
server.listen(port, function() {
console.log('%s is running at %s', server.name, server.url);
console.log(banner);
console.log('Magic happens on port ' + port);
});