mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-30 02:25:55 +01:00
log self account delete, logout on self account delete
This commit is contained in:
@@ -1,21 +1,20 @@
|
||||
'use strict';
|
||||
|
||||
var async = require('async'),
|
||||
var async = require('async');
|
||||
|
||||
|
||||
user = require('../user'),
|
||||
topics = require('../topics'),
|
||||
notifications = require('../notifications'),
|
||||
messaging = require('../messaging'),
|
||||
plugins = require('../plugins'),
|
||||
utils = require('../../public/src/utils'),
|
||||
websockets = require('./index'),
|
||||
meta = require('../meta'),
|
||||
events = require('../events'),
|
||||
emailer = require('../emailer'),
|
||||
db = require('../database'),
|
||||
var user = require('../user');
|
||||
var topics = require('../topics');
|
||||
var notifications = require('../notifications');
|
||||
var messaging = require('../messaging');
|
||||
var plugins = require('../plugins');
|
||||
var websockets = require('./index');
|
||||
var meta = require('../meta');
|
||||
var events = require('../events');
|
||||
var emailer = require('../emailer');
|
||||
var db = require('../database');
|
||||
|
||||
SocketUser = {};
|
||||
var SocketUser = {};
|
||||
|
||||
|
||||
require('./user/profile')(SocketUser);
|
||||
@@ -33,20 +32,29 @@ SocketUser.deleteAccount = function(socket, data, callback) {
|
||||
if (!socket.uid) {
|
||||
return;
|
||||
}
|
||||
user.isAdministrator(socket.uid, function(err, isAdmin) {
|
||||
if (err || isAdmin) {
|
||||
return callback(err || new Error('[[error:cant-delete-admin]]'));
|
||||
}
|
||||
|
||||
socket.broadcast.emit('event:user_status_change', {uid: socket.uid, status: 'offline'});
|
||||
user.deleteAccount(socket.uid, function(err) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
async.waterfall([
|
||||
function (next) {
|
||||
user.isAdministrator(socket.uid, next);
|
||||
},
|
||||
function (isAdmin, next) {
|
||||
if (isAdmin) {
|
||||
return next(new Error('[[error:cant-delete-admin]]'));
|
||||
}
|
||||
websockets.in('uid_' + socket.uid).emit('event:logout');
|
||||
callback();
|
||||
});
|
||||
});
|
||||
user.deleteAccount(socket.uid, next);
|
||||
},
|
||||
function (next) {
|
||||
socket.broadcast.emit('event:user_status_change', {uid: socket.uid, status: 'offline'});
|
||||
|
||||
events.log({
|
||||
type: 'user-delete',
|
||||
uid: socket.uid,
|
||||
targetUid: socket.uid,
|
||||
ip: socket.ip
|
||||
});
|
||||
next();
|
||||
}
|
||||
], callback);
|
||||
};
|
||||
|
||||
SocketUser.emailExists = function(socket, data, callback) {
|
||||
@@ -271,7 +279,7 @@ SocketUser.invite = function(socket, email, callback) {
|
||||
return callback(new Error('[[error:invalid-data]]'));
|
||||
}
|
||||
|
||||
var registrationType = meta.config.registrationType
|
||||
var registrationType = meta.config.registrationType;
|
||||
|
||||
if (registrationType !== 'invite-only' && registrationType !== 'admin-invite-only') {
|
||||
return callback(new Error('[[error:forum-not-invite-only]]'));
|
||||
|
||||
Reference in New Issue
Block a user