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

85 lines
1.9 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');
2018-08-31 15:34:29 -04:00
var helpers = require('../helpers');
var accountHelpers = require('./helpers');
var sessionController = {};
2018-08-31 15:34:29 -04:00
sessionController.get = function (req, res, callback) {
var userData;
async.waterfall([
function (next) {
accountHelpers.getUserDataByUserSlug(req.params.userslug, req.uid, next);
},
function (_userData, next) {
userData = _userData;
if (!userData) {
return callback();
}
async.parallel({
sessions: async.apply(user.auth.getSessions, userData.uid, req.sessionID),
}, next);
},
function (data) {
userData.sessions = data.sessions;
userData.title = '[[pages:account/sessions]]';
userData.breadcrumbs = helpers.buildBreadcrumbs([{ text: userData.username, url: '/user/' + userData.userslug }, { text: '[[pages:account/sessions]]' }]);
res.render('account/sessions', userData);
},
], callback);
};
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);
}
return res.sendStatus(200);
});
};
2017-02-18 02:30:48 -07:00
module.exports = sessionController;