FEATURE: Promote the "delete group" staff action log. (#16656)

We used to log group deletion as custom, which means we can't later search for them. Include group ID in the details.
This commit is contained in:
Roman Rizzi 2022-05-09 12:12:52 -03:00 committed by GitHub
parent 54759b7e8c
commit 6bdcd7afb2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 39 additions and 5 deletions

View File

@ -45,10 +45,8 @@ class Admin::GroupsController < Admin::AdminController
if group.automatic
can_not_modify_automatic
else
details = { name: group.name }
details[:grant_trust_level] = group.grant_trust_level if group.grant_trust_level
StaffActionLogger.new(current_user).log_group_deletetion(group)
StaffActionLogger.new(current_user).log_custom('delete_group', details)
group.destroy!
render json: success_json
end

View File

@ -116,7 +116,8 @@ class UserHistory < ActiveRecord::Base
post_staff_note_create: 95,
post_staff_note_destroy: 96,
watched_word_create: 97,
watched_word_destroy: 98
watched_word_destroy: 98,
delete_group: 99
)
end
@ -209,7 +210,8 @@ class UserHistory < ActiveRecord::Base
:post_staff_note_create,
:post_staff_note_destroy,
:watched_word_create,
:watched_word_destroy
:watched_word_destroy,
:delete_group
]
end

View File

@ -831,6 +831,25 @@ class StaffActionLogger
)
end
def log_group_deletetion(group)
raise Discourse::InvalidParameters.new(:group) if group.nil?
details = [
"name: #{group.name}",
"id: #{group.id}"
]
if group.grant_trust_level
details << "grant_trust_level: #{group.grant_trust_level}"
end
UserHistory.create!(
acting_user_id: @admin.id,
action: UserHistory.actions[:delete_group],
details: details.join(', ')
)
end
private
def get_changes(changes)

View File

@ -0,0 +1,14 @@
# frozen_string_literal: true
class MigrateCustomGroupDeletionLogs < ActiveRecord::Migration[7.0]
def up
DB.exec(<<~SQL, group_deleted_id: 99, custom_action_id: 23)
UPDATE user_histories
SET action = :group_deleted_id, custom_type = NULL
WHERE action = :custom_action_id AND custom_type = 'delete_group'
SQL
end
def down
raise ActiveRecord::IrreversibleMigration
end
end

View File

@ -274,6 +274,7 @@ RSpec.describe Admin::GroupsController do
expect(history).to be_present
expect(history.details).to include("name: #{group.name}")
expect(history.details).to include("id: #{group.id}")
end
it 'logs the grant_trust_level attribute' do