diff --git a/app/controllers/scim_rails/application_controller.rb b/app/controllers/scim_rails/application_controller.rb index 2c2d09bb..0090bea6 100644 --- a/app/controllers/scim_rails/application_controller.rb +++ b/app/controllers/scim_rails/application_controller.rb @@ -5,9 +5,14 @@ class ApplicationController < ActionController::API include Response before_action :authorize_request + before_action :log_request, if: -> { ScimRails.config.audit_logger } private + def log_request + ScimRails.config.audit_logger.info request + end + def authorize_request send(authentication_strategy) do |searchable_attribute, authentication_attribute| authorization = AuthorizeApiRequest.new( diff --git a/lib/generators/scim_rails/templates/initializer.rb b/lib/generators/scim_rails/templates/initializer.rb index 2cd7e503..6dfd92df 100644 --- a/lib/generators/scim_rails/templates/initializer.rb +++ b/lib/generators/scim_rails/templates/initializer.rb @@ -40,6 +40,10 @@ # For example, [:created_at, :id] or { created_at: :desc }. # config.scim_users_list_order = :id + # This logger will be used to log every incoming SCIM request + # using its `info` method. Customize this for audit purposes if needed. + # config.audit_logger = Logger.new + # Method called on user model to deprovision a user. config.user_deprovision_method = :archive! diff --git a/lib/scim_rails/config.rb b/lib/scim_rails/config.rb index aa4f108b..66c13b01 100644 --- a/lib/scim_rails/config.rb +++ b/lib/scim_rails/config.rb @@ -16,6 +16,7 @@ class Config ALGO_NONE = "none" attr_writer \ + :audit_logger, :basic_auth_model, :mutable_user_attributes_schema, :scim_users_model @@ -56,5 +57,12 @@ def basic_auth_model def scim_users_model @scim_users_model.constantize end + + def audit_logger + case @audit_logger + when String then @audit_logger.constantize + else @audit_logger + end + end end end