FEATURE: add a button for staff to delete a user on their profile page
This commit is contained in:
parent
ac245ede43
commit
ebcf21585c
|
@ -314,7 +314,7 @@ Discourse.AdminUser = Discourse.User.extend({
|
||||||
}
|
}
|
||||||
}.property('deleteForbidden'),
|
}.property('deleteForbidden'),
|
||||||
|
|
||||||
destroy: function() {
|
destroy: function(opts) {
|
||||||
var user = this;
|
var user = this;
|
||||||
|
|
||||||
var performDestroy = function(block) {
|
var performDestroy = function(block) {
|
||||||
|
@ -324,6 +324,9 @@ Discourse.AdminUser = Discourse.User.extend({
|
||||||
formData["block_urls"] = true;
|
formData["block_urls"] = true;
|
||||||
formData["block_ip"] = true;
|
formData["block_ip"] = true;
|
||||||
}
|
}
|
||||||
|
if (opts && opts.deletePosts) {
|
||||||
|
formData["delete_posts"] = true;
|
||||||
|
}
|
||||||
Discourse.ajax("/admin/users/" + user.get('id') + '.json', {
|
Discourse.ajax("/admin/users/" + user.get('id') + '.json', {
|
||||||
type: 'DELETE',
|
type: 'DELETE',
|
||||||
data: formData
|
data: formData
|
||||||
|
|
|
@ -38,6 +38,10 @@ export default ObjectController.extend(CanCheckEmails, {
|
||||||
return Discourse.User.currentProp('can_invite_to_forum');
|
return Discourse.User.currentProp('can_invite_to_forum');
|
||||||
}.property(),
|
}.property(),
|
||||||
|
|
||||||
|
canDeleteUser: function() {
|
||||||
|
return this.get('can_be_deleted') && this.get('can_delete_all_posts');
|
||||||
|
}.property('can_be_deleted', 'can_delete_all_posts'),
|
||||||
|
|
||||||
loadedAllItems: function() {
|
loadedAllItems: function() {
|
||||||
switch (this.get("datasource")) {
|
switch (this.get("datasource")) {
|
||||||
case "badges": { return true; }
|
case "badges": { return true; }
|
||||||
|
@ -61,5 +65,13 @@ export default ObjectController.extend(CanCheckEmails, {
|
||||||
|
|
||||||
privateMessagesActive: Em.computed.equal('pmView', 'index'),
|
privateMessagesActive: Em.computed.equal('pmView', 'index'),
|
||||||
privateMessagesMineActive: Em.computed.equal('pmView', 'mine'),
|
privateMessagesMineActive: Em.computed.equal('pmView', 'mine'),
|
||||||
privateMessagesUnreadActive: Em.computed.equal('pmView', 'unread')
|
privateMessagesUnreadActive: Em.computed.equal('pmView', 'unread'),
|
||||||
|
|
||||||
|
actions: {
|
||||||
|
adminDelete: function() {
|
||||||
|
Discourse.AdminUser.find(this.get('username').toLowerCase()).then(function(user){
|
||||||
|
user.destroy({deletePosts: true});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -126,6 +126,12 @@
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</dd>
|
</dd>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
{{#if canDeleteUser}}
|
||||||
|
<button class="btn btn-danger" {{action "adminDelete"}}>
|
||||||
|
<i class="fa fa-exclamation-triangle"></i>
|
||||||
|
{{i18n admin.user.delete}}
|
||||||
|
</button>
|
||||||
|
{{/if}}
|
||||||
</dl>
|
</dl>
|
||||||
{{plugin-outlet "user-profile-secondary"}}
|
{{plugin-outlet "user-profile-secondary"}}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -59,7 +59,9 @@ class UserSerializer < BasicUserSerializer
|
||||||
:number_of_flagged_posts,
|
:number_of_flagged_posts,
|
||||||
:number_of_flags_given,
|
:number_of_flags_given,
|
||||||
:number_of_suspensions,
|
:number_of_suspensions,
|
||||||
:number_of_warnings
|
:number_of_warnings,
|
||||||
|
:can_be_deleted,
|
||||||
|
:can_delete_all_posts
|
||||||
|
|
||||||
private_attributes :locale,
|
private_attributes :locale,
|
||||||
:email_digests,
|
:email_digests,
|
||||||
|
@ -239,6 +241,14 @@ class UserSerializer < BasicUserSerializer
|
||||||
UserHistory.for(object, :suspend_user).count
|
UserHistory.for(object, :suspend_user).count
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def can_be_deleted
|
||||||
|
scope.can_delete_user?(object)
|
||||||
|
end
|
||||||
|
|
||||||
|
def can_delete_all_posts
|
||||||
|
scope.can_delete_all_posts?(object)
|
||||||
|
end
|
||||||
|
|
||||||
###
|
###
|
||||||
### PRIVATE ATTRIBUTES
|
### PRIVATE ATTRIBUTES
|
||||||
###
|
###
|
||||||
|
|
Loading…
Reference in New Issue