fix: #8556, catch errors from admin check

v1.18.x
Barış Soner Uşaklı 5 years ago
parent 326827382a
commit bfaf648ec3

@ -122,32 +122,27 @@ User.forcePasswordReset = async function (socket, uids) {
};
User.deleteUsers = async function (socket, uids) {
await canDeleteUids(uids);
deleteUsers(socket, uids, async function (uid) {
return await user.deleteAccount(uid);
});
};
User.deleteUsersContent = async function (socket, uids) {
if (!Array.isArray(uids)) {
throw new Error('[[error:invalid-data]]');
}
const isMembers = await groups.isMembers(uids, 'administrators');
if (isMembers.includes(true)) {
throw new Error('[[error:cant-delete-other-admins]]');
}
await canDeleteUids(uids);
await Promise.all(uids.map(async (uid) => {
await user.deleteContent(socket.uid, uid);
}));
};
User.deleteUsersAndContent = async function (socket, uids) {
await canDeleteUids(uids);
deleteUsers(socket, uids, async function (uid) {
return await user.delete(socket.uid, uid);
});
};
async function deleteUsers(socket, uids, method) {
async function canDeleteUids(uids) {
if (!Array.isArray(uids)) {
throw new Error('[[error:invalid-data]]');
}
@ -155,6 +150,9 @@ async function deleteUsers(socket, uids, method) {
if (isMembers.includes(true)) {
throw new Error('[[error:cant-delete-other-admins]]');
}
}
async function deleteUsers(socket, uids, method) {
async function doDelete(uid) {
await flags.resolveFlag('user', uid, socket.uid);
const userData = await method(uid);

Loading…
Cancel
Save