Module: Datadog::AppSec::Contrib::Devise::Patches::SigninTrackingPatch

Defined in:
lib/datadog/appsec/contrib/devise/patches/signin_tracking_patch.rb

Overview

A patch for Devise::Authenticatable strategy with tracking functionality

Instance Method Summary collapse

Instance Method Details

#validate(resource, &block) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/datadog/appsec/contrib/devise/patches/signin_tracking_patch.rb', line 14

def validate(resource, &block)
  result = super

  return result unless AppSec.enabled?
  return result if @_datadog_appsec_skip_track_login_event
  return result unless Configuration.auto_user_instrumentation_enabled?
  return result unless AppSec.active_context

  context = AppSec.active_context
  if context.trace.nil? || context.span.nil?
    Datadog.logger.debug { 'AppSec: unable to track signin events, due to missing trace or span' }
    return result
  end

  context.trace.keep!

  if result
    (context, resource)
    Instrumentation.gateway.push('appsec.events.user_lifecycle', Ext::EVENT_LOGIN_SUCCESS)

    return result
  end

  (context, resource)
  Instrumentation.gateway.push('appsec.events.user_lifecycle', Ext::EVENT_LOGIN_FAILURE)

  result
end