分离屏蔽用户和删除发言接口

This commit is contained in:
alsotang 2014-10-26 18:11:05 +08:00
parent aafe022702
commit deea1c012b
6 changed files with 72 additions and 14 deletions

View File

@ -338,20 +338,13 @@ exports.block = function (req, res, next) {
return next(new Error('user is not exists'));
}
if (action === 'set_block') {
ep.all('block_user', 'del_topics', 'del_replys',
function (user, topics, replys) {
ep.all('block_user',
function (user) {
res.json({status: 'success'});
});
user.is_block = true;
user.save(ep.done('block_user'));
// 防止误操作,平时都注释
TopicModel.remove({author_id: user._id}, ep.done('del_topics'));
ReplyModel.remove({author_id: user._id}, ep.done('del_replys'));
// ep.emit('del_topics');
// ep.emit('del_replys');
// END 防止误操作,平时都注释
} else if (action === 'cancel_block') {
user.is_block = false;
user.save(ep.done(function () {
@ -361,3 +354,24 @@ exports.block = function (req, res, next) {
}
}));
};
exports.deleteAll = function (req, res, next) {
var loginname = req.params.name;
var ep = EventProxy.create();
ep.fail(next);
User.getUserByLoginName(loginname, ep.done(function (user) {
if (!user) {
return next(new Error('user is not exists'));
}
ep.all('del_topics', 'del_replys', 'del_ups',
function () {
res.json({status: 'success'});
});
TopicModel.remove({author_id: user._id}, ep.done('del_topics'));
ReplyModel.remove({author_id: user._id}, ep.done('del_replys'));
// 点赞数也全部干掉
ReplyModel.update({}, {$pull: {'ups': user._id}}, {multi: true}, ep.done('del_ups'));
}));
};

View File

@ -21,8 +21,8 @@ describe('test/api/v1/tools.test.js', function () {
})
.end(function (err, res) {
should.not.exists(err);
res.status.should.equal(302);
res.headers.location.should.equal('/api/v1/user/' + mockUser.loginname);
res.status.should.equal(200);
res.body.loginname.should.equal(mockUser.loginname);
done();
})
})

View File

@ -6,7 +6,7 @@ var should = require('should');
var support = require('../../support/support');
describe.only('test/api/v1/topic.test.js', function () {
describe('test/api/v1/topic.test.js', function () {
var mockUser, mockTopic;
before(function (done) {
support.createUser(function (err, user) {

View File

@ -16,6 +16,7 @@ var support = require('../support/support');
var _ = require('lodash');
var pedding = require('pedding');
var UserProxy = require('../../proxy/user');
var ReplyModel = require('../../models').Reply;
describe('test/controllers/user.test.js', function () {
var testUser;
@ -260,4 +261,29 @@ describe('test/controllers/user.test.js', function () {
})
})
})
describe('#delete_all', function () {
it('should delele all ups', function (done) {
support.createUser(function (err, user) {
var userId = user._id;
ReplyModel.findOne(function (err, reply) {
reply.ups.push(userId);
reply.save(function (err, reply) {
reply.ups.should.containEql(userId)
request.post('/user/' + user.loginname + '/delete_all')
.set('Cookie', support.adminUserCookie)
.expect(200, function (err, res) {
res.body.should.eql({ status: 'success' });
ReplyModel.findOne({_id: reply._id}, function (err, reply) {
reply.ups.should.not.containEql(userId)
done();
})
})
})
})
})
})
})
});

View File

@ -62,11 +62,13 @@
<% } %>
<% if (!user.is_block) { %>
<span class='span-common' id='set_block_btn' action='set_block'>屏蔽用户并删其所有帖</span>
<span class='span-common' id='set_block_btn' action='set_block'>屏蔽用户</span>
<% } else { %>
<span class='span-common' id='set_block_btn' action='cancel_block'>取消屏蔽用户</span>
<% } %>
<span class="span-common" id="delete_all">删除所有发言</span>
<br/><br/>
Email (Seen by Administrator): <a href="mailto:<%= user.email %>"><%= user.email %></a>
<% if (!user.active) { %>
@ -144,7 +146,7 @@
_csrf: '<%- csrf %>',
action: action
};
if (action === 'set_block' && !confirm('确定要屏蔽该用户吗?此操作不可逆且会删除该用户的所有主题和回复!')) {
if (action === 'set_block' && !confirm('确定要屏蔽该用户吗?')) {
return;
}
$.post('/user/<%- user.loginname %>/block', params, function (data) {
@ -159,6 +161,21 @@
}
}, 'json');
})
$('#delete_all').click(function () {
var $me = $(this);
var params = {
_csrf: '<%- csrf %>',
};
if (!confirm('确定要删除吗?此操作不可逆')) {
return;
}
$.post('/user/<%- user.loginname %>/delete_all', params, function (data) {
if (data.status === 'success') {
alert('操作成功');
}
}, 'json');
})
});
</script>
<% } %>

View File

@ -61,6 +61,7 @@ router.get('/user/:name/replies', user.list_replies); // 用户参与的所有
router.post('/user/set_star', auth.adminRequired, user.toggle_star); // 把某用户设为达人
router.post('/user/cancel_star', auth.adminRequired, user.toggle_star); // 取消某用户的达人身份
router.post('/user/:name/block', auth.adminRequired, user.block); // 禁言某用户
router.post('/user/:name/delete_all', auth.adminRequired, user.deleteAll); // 删除某用户所有发言
// message controler
router.get('/my/messages', auth.userRequired, message.index); // 用户个人的所有消息页