Adding :internal auditing for admin/spaces#update (#17010)

There are two existing listeners for the `Audit::Logger`: `:moderator`
and `:internal`.  (Note: during tests we ignore the :moderator and
:internal logs as defined in [config/initializers/audit_events.rb][1].)

Using `rg "Audit::Logger\.log\(:internal," --files-with-matches`, the
`:internal` listener is found in:

- app/controllers/admin/secrets_controller.rb
- app/controllers/admin/settings/base_controller.rb
- app/controllers/admin/settings/general_settings_controller.rb

Using `rg "Audit::Logger\.log\(:moderator," --files-with-matches`, the
`:moderator` listener is used in:

- app/controllers/rating_votes_controller.rb
- app/controllers/comments_controller.rb
- app/controllers/stories/pinned_articles_controller.rb
- app/controllers/admin/response_templates_controller.rb
- app/controllers/admin/tags_controller.rb
- app/controllers/admin/articles_controller.rb
- app/controllers/admin/users_controller.rb
- app/controllers/admin/reactions_controller.rb
- app/controllers/admin/tags/moderators_controller.rb
- app/controllers/tag_adjustments_controller.rb
- app/controllers/reactions_controller.rb

The `admin/spaces#update` action is most similar to the `admin#settings`
actions, which is why I chose `:internal`.  I am looking for further
guidance on documenting this little area of the application (in
particular providing a data dictionary of :internal and :moderator).

Closes forem/forem#16957

[1]:https://github.com/forem/forem/blob/main/config/initializers/audit_events.rb#L9-L11
This commit is contained in:
Jeremy Friesen 2022-03-25 14:25:13 -04:00 committed by GitHub
parent 75041ff93f
commit e2940e75ca
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 13 deletions

View file

@ -5,10 +5,9 @@ module Admin
class SpacesController < Admin::ApplicationController
layout "admin"
# TODO: What kind of logging do we need? Any? Looking for guidance. I can assume we want to
# log changes to a space.
#
# after_action only: %i[update] { Audit::Logger.log(:moderator, current_user, params.dup) }
after_action only: %i[update] do
Audit::Logger.log(:internal, current_user, params.dup)
end
# @note I'm instantiating the @space because in the index view I'm rendering a form that then
# PUTs to the update action.

View file

@ -1,12 +1,11 @@
module Audit
##
# Main class for wrapping ActiveSupport Instrumentation API.
#
# This class represent main entry point for receiving and notifying custom
# events, implemented according to
# https://guides.rubyonrails.org/active_support_instrumentation.html#creating-custom-events
class Notification
##
# Main class for wrapping ActiveSupport Instrumentation API.
#
# This class represent main entry point for receiving and notifying custom
# events, implemented according to
# https://guides.rubyonrails.org/active_support_instrumentation.html#creating-custom-events
class << self
include Audit::Helper
@ -22,7 +21,6 @@ module Audit
# payload.user_id = current_user.id
# payload.roles = current_user.roles.pluck(:name)
# end
def notify(listener, &block)
return unless block
@ -32,7 +30,6 @@ module Audit
##
# Audit::Notification.listen receives Events sent from ActiveSupport Instrumentation API.
# Then, this event is serialized and send to background job.
def listen(*args)
event = ActiveSupport::Notifications::Event.new(*args)
AuditLog.create!(params_hash(event))