mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-13 09:25:45 +01:00
feat: account content deletion, closes #8381
This commit is contained in:
@@ -126,6 +126,20 @@ User.deleteUsers = async function (socket, uids) {
|
||||
});
|
||||
};
|
||||
|
||||
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 Promise.all(uids.map(async (uid) => {
|
||||
await user.deleteContent(socket.uid, uid);
|
||||
}));
|
||||
};
|
||||
|
||||
User.deleteUsersAndContent = async function (socket, uids) {
|
||||
deleteUsers(socket, uids, async function (uid) {
|
||||
await user.delete(socket.uid, uid);
|
||||
|
||||
@@ -17,7 +17,13 @@ const file = require('../file');
|
||||
module.exports = function (User) {
|
||||
const deletesInProgress = {};
|
||||
|
||||
User.delete = async function (callerUid, uid) {
|
||||
User.delete = async (callerUid, uid) => {
|
||||
await User.deleteContent(callerUid, uid);
|
||||
await removeFromSortedSets(uid);
|
||||
return await User.deleteAccount(uid);
|
||||
};
|
||||
|
||||
User.deleteContent = async function (callerUid, uid) {
|
||||
if (parseInt(uid, 10) <= 0) {
|
||||
throw new Error('[[error:invalid-uid]]');
|
||||
}
|
||||
@@ -25,13 +31,10 @@ module.exports = function (User) {
|
||||
throw new Error('[[error:already-deleting]]');
|
||||
}
|
||||
deletesInProgress[uid] = 'user.delete';
|
||||
await removeFromSortedSets(uid);
|
||||
await deletePosts(callerUid, uid);
|
||||
await deleteTopics(callerUid, uid);
|
||||
await deleteUploads(uid);
|
||||
await deleteQueued(uid);
|
||||
const userData = await User.deleteAccount(uid);
|
||||
return userData;
|
||||
};
|
||||
|
||||
async function deletePosts(callerUid, uid) {
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
<li><a href="#" class="reset-lockout"><i class="fa fa-fw fa-unlock"></i> [[admin/manage/users:reset-lockout]]</a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="#" class="delete-user"><i class="fa fa-fw fa-trash-o"></i> [[admin/manage/users:delete]]</a></li>
|
||||
<li><a href="#" class="delete-user-content"><i class="fa fa-fw fa-trash-o"></i> [[admin/manage/users:delete-content]]</a></li>
|
||||
<li><a href="#" class="delete-user-and-content"><i class="fa fa-fw fa-trash-o"></i> [[admin/manage/users:purge]]</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user