Sha256: 27fe281b7fb79546343ecbe99a053a40da2ee36db58b4c92c238e9a1f64572f4

Contents?: true

Size: 1.63 KB

Versions: 21

Compression:

Stored size: 1.63 KB

Contents

# frozen_string_literal: true

require_relative '../tracking'
require_relative '../resource'
require_relative '../event'

module Datadog
  module AppSec
    module Contrib
      module Devise
        module Patcher
          # Hook in devise registration controller
          module RegistrationControllerPatch
            def create
              return super unless AppSec.enabled?

              track_user_events_configuration = Datadog.configuration.appsec.track_user_events

              return super unless track_user_events_configuration.enabled

              automated_track_user_events_mode = track_user_events_configuration.mode

              appsec_scope = Datadog::AppSec.active_scope
              return super unless appsec_scope

              super do |resource|
                if resource.persisted?
                  devise_resource = Resource.new(resource)

                  event_information = Event.new(devise_resource, automated_track_user_events_mode)

                  if event_information.user_id
                    Datadog.logger.debug { 'User Signup Event' }
                  else
                    Datadog.logger.warn { 'User Signup Event, but can\'t extract user ID. Tracking empty event' }
                  end

                  Tracking.track_signup(
                    appsec_scope.trace,
                    appsec_scope.service_entry_span,
                    user_id: event_information.user_id,
                    **event_information.to_h
                  )
                end

                yield resource if block_given?
              end
            end
          end
        end
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 2 rubygems

Version Path
datadog-2.8.0 lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb
datadog-2.7.1 lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb
datadog-2.7.0 lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb
datadog-2.6.0 lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb
datadog-2.5.0 lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb
datadog-2.4.0 lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb
datadog-2.3.0 lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb
datadog-2.2.0 lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb
ddtrace-1.23.3 lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb
ddtrace-1.23.2 lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb
datadog-2.1.0 lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb
datadog-2.0.0 lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb
ddtrace-1.23.1 lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb
datadog-2.0.0.beta2 lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb
ddtrace-1.22.0 lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb
datadog-2.0.0.beta1 lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb
ddtrace-1.21.1 lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb
ddtrace-1.21.0 lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb
ddtrace-1.20.0 lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb
ddtrace-1.19.0 lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb