Module: CastleDevise::Patches::PasswordsController

Extended by:
ActiveSupport::Concern
Defined in:
lib/castle_devise/patches/passwords_controller.rb

Overview

Monkey-patch for Devise::PasswordsController which includes Castle to the password reset requests flow.

Instance Method Summary collapse

Instance Method Details

#createObject

POST /resource/password



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/castle_devise/patches/passwords_controller.rb', line 32

def create
  super do |resource|
    next unless resource_class.castle_hooks[:after_password_reset_request]

    begin
      CastleDevise.sdk_facade.log(
        event: "$password_reset_request",
        status: resource.persisted? ? "$succeeded" : "$failed",
        context: CastleDevise::Context.from_rack_env(request.env, scope_name, resource)
      )
    rescue Castle::Error => e
      # log API errors and pass-through it
      CastleDevise.logger.error("[CastleDevise] log($password_reset_request): #{e}")
    end
  end
end

#updateObject

Note:

Notice, this must happen within a block because before calling “reset_password_by_token” method we don’t know what resource we operate on.

PUT /resource/password



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/castle_devise/patches/passwords_controller.rb', line 14

def update
  super do |resource|
    next unless resource_class.castle_hooks[:profile_update]

    begin
      CastleDevise.sdk_facade.log(
        event: "$profile_update",
        status: resource.errors.empty? ? "$succeeded" : "$failed",
        context: CastleDevise::Context.from_rack_env(request.env, scope_name, resource)
      )
    rescue Castle::Error => e
      # log API errors and pass-through it
      CastleDevise.logger.error("[CastleDevise] log($password_reset_request): #{e}")
    end
  end
end