mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-01 19:46:01 +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];
|
||||
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);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user