30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
# File 'lib/datadog/appsec/contrib/devise/patcher.rb', line 30
def patch
::ActiveSupport.on_load(:before_initialize) do |app|
GUARD_ONCE_PER_APP[app].run do
app.middleware.insert_after(Warden::Manager, TrackingMiddleware)
rescue RuntimeError
AppSec.telemetry.error('AppSec: unable to insert Devise TrackingMiddleware')
end
end
::ActiveSupport.on_load(:after_initialize) do
if ::Devise::RegistrationsController.descendants.empty?
::Devise::RegistrationsController.prepend(Patches::SignupTrackingPatch)
else
::Devise::RegistrationsController.descendants.each do |controller|
controller.prepend(Patches::SignupTrackingPatch)
end
end
end
::Devise::Strategies::Authenticatable.prepend(Patches::SigninTrackingPatch)
if ::Devise::STRATEGIES.include?(:rememberable)
require 'devise/models/rememberable'
::Devise::Strategies::Rememberable.prepend(Patches::SkipSigninTrackingPatch)
end
Patcher.instance_variable_set(:@patched, true)
end
|