Files
NodeBB/src/controllers/accounts/session.js

55 lines
1.1 KiB
JavaScript
Raw Normal View History

'use strict';
2016-01-19 18:41:38 +02:00
var async = require('async');
2016-01-19 18:41:38 +02:00
var db = require('../../database');
var user = require('../../user');
var sessionController = {};
sessionController.revoke = function (req, res, next) {
if (!req.params.hasOwnProperty('uuid')) {
return next();
}
var _id;
var uid = res.locals.uid;
async.waterfall([
2016-01-19 18:41:38 +02:00
function (next) {
if (!uid) {
return next(new Error('[[error:no-session-found]]'));
}
db.getSortedSetRange('uid:' + uid + ':sessions', 0, -1, next);
2016-01-19 18:41:38 +02:00
},
function (sids, done) {
async.eachSeries(sids, function (sid, next) {
db.sessionStore.get(sid, function (err, sessionObj) {
2016-01-19 18:41:38 +02:00
if (err) {
return next(err);
}
if (sessionObj && sessionObj.meta && sessionObj.meta.uuid === req.params.uuid) {
_id = sid;
done();
} else {
next();
}
});
}, next);
},
function (next) {
if (!_id) {
return next(new Error('[[error:no-session-found]]'));
}
user.auth.revokeSession(_id, uid, next);
2017-02-17 19:31:21 -07:00
},
], function (err) {
if (err) {
return res.status(500).send(err.message);
} else {
return res.sendStatus(200);
}
});
};
module.exports = sessionController;