mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-01 11:35:55 +01:00
feat: allow revokeAllSessions method to revoke all sessions except that which is passed in (new arg)
This commit is contained in:
@@ -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];
|
uids = Array.isArray(uids) ? uids : [uids];
|
||||||
const sids = await db.getSortedSetsMembers(uids.map(uid => `uid:${uid}:sessions`));
|
const sids = await db.getSortedSetsMembers(uids.map(uid => `uid:${uid}:sessions`));
|
||||||
const promises = [];
|
const promises = [];
|
||||||
uids.forEach((uid, index) => {
|
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);
|
await Promise.all(promises);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user