Commit 08bc1e1c by zCaesar

can sub group

parent f1ffcccf
var config = require('config'); var config = require('config');
// https://github.com/isaacs/node-lru-cache // https://github.com/isaacs/node-lru-cache
var LRU = require("lru-cache") , var LRU = require("lru-cache"),
cache = LRU({ cache = LRU({
max: 500, max: 500,
maxAge: 1000 * 60 * 5 maxAge: 1000 * 60 * 5
}); });
var debug = false; var debug = false;
// for testing // for testing
...@@ -12,13 +13,13 @@ function authCheck(client_id, token, topic, callback) { ...@@ -12,13 +13,13 @@ function authCheck(client_id, token, topic, callback) {
callback(true); callback(true);
} }
module.exports = function(options={}) { module.exports = function (options = {}) {
debug = options.debug || false; debug = options.debug || false;
return function(req, res, next) { return function (req, res, next) {
if (debug) { if (options.debug) {
console.log('auth_on_subscribe-------------'); console.log('auth_on_subscribe-------------');
console.log(req.body); console.log(req.body);
} }
...@@ -27,24 +28,35 @@ module.exports = function(options={}) { ...@@ -27,24 +28,35 @@ module.exports = function(options={}) {
var authstatus; var authstatus;
var topic = req.body.topics[0].topic; var topic = req.body.topics[0].topic;
var cachekey = 'sub:'+req.body.client_id +':'+ req.body.username+':'+topic; var cachekey = 'sub:' + req.body.client_id + ':' + req.body.username + ':' + topic;
var authstatus = cache.get(cachekey); var authstatus = cache.get(cachekey);
if (typeof(authstatus)=='undefined') { // Set Response
// cache missed var getGroupID = require('./utils/getGroupID').getGroupID
authCheck(req.body.client_id, req.body.username, topic, function(result) { getGroupID(req.body.username, req.body.client_id, (_id) => { // get groupID
cache.set(cachekey, result); // console.log(_id)
res.send({ var _ftopic = require('./utils/getTopic').getTopic(topic, _id) // get topic where concat with groupID
"result": result?"ok":"no" var _topic = [{ // setTopic for response
'topic': _ftopic,
'qos': 0
}]
var response = {
'result': 'ok',
'topics': _topic
}
if (typeof (authstatus) == 'undefined') {
// cache missed
authCheck(req.body.client_id, req.body.username, topic, function (result) {
cache.set(cachekey, result);
res.send(response);
}); });
}); }
} else {
else { res.send(response);
res.send({ }
"result": authstatus?"ok":"no" next();
}); })
}
next();
} }
else { else {
res.send({ res.send({
...@@ -54,3 +66,4 @@ module.exports = function(options={}) { ...@@ -54,3 +66,4 @@ module.exports = function(options={}) {
} }
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment