feat: allow revokeAllSessions method to revoke all sessions except that which is passed in (new arg)

v1.18.x
Julian Lam 4 years ago
parent f53fc1ad0b
commit b0a4a1d3e4

@ -135,12 +135,15 @@ module.exports = function (User) {
]);
};
User.auth.revokeAllSessions = async function (uids) {
User.auth.revokeAllSessions = async function (uids, except) {
uids = Array.isArray(uids) ? uids : [uids];
const sids = await db.getSortedSetsMembers(uids.map(uid => `uid:${uid}:sessions`));
const promises = [];
uids.forEach((uid, index) => {
promises.push(sids[index].map(s => User.auth.revokeSession(s, uid)));
const ids = sids[index].filter(id => id !== except);
if (ids.length) {
promises.push(ids.map(s => User.auth.revokeSession(s, uid)));
}
});
await Promise.all(promises);
};

Loading…
Cancel
Save