mirror of
https://github.com/cnodejs/nodeclub.git
synced 2025-12-08 19:55:55 +00:00
分离屏蔽用户和删除发言接口
This commit is contained in:
parent
aafe022702
commit
deea1c012b
@ -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'));
|
||||
}));
|
||||
};
|
||||
|
||||
@ -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();
|
||||
})
|
||||
})
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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();
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
});
|
||||
|
||||
@ -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>
|
||||
<% } %>
|
||||
|
||||
@ -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); // 用户个人的所有消息页
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user