Sha256: 646a02fe96b7bec0e7676c307faaf03a5dc40dfac04e68aa69bcf12ff81ecc2e

Contents?: true

Size: 1.33 KB

Versions: 14

Compression:

Stored size: 1.33 KB

Contents

module Sorcery
  module Controller
    module Submodules
      # This module helps protect user accounts by locking them down after too
      # many failed attemps to login were detected.
      # This is the controller part of the submodule which takes care of
      # updating the failed logins and resetting them.
      # See Sorcery::Model::Submodules::BruteForceProtection for configuration
      # options.
      module BruteForceProtection
        def self.included(base)
          base.send(:include, InstanceMethods)

          Config.after_login << :reset_failed_logins_count!
          Config.after_failed_login << :update_failed_logins_count!
        end

        module InstanceMethods
          protected

          # Increments the failed logins counter on every failed login.
          # Runs as a hook after a failed login.
          def update_failed_logins_count!(credentials)
            user = user_class.sorcery_adapter.find_by_credentials(credentials)
            user.register_failed_login! if user
          end

          # Resets the failed logins counter.
          # Runs as a hook after a successful login.
          def reset_failed_logins_count!(user, _credentials)
            user.sorcery_adapter.update_attribute(user_class.sorcery_config.failed_logins_count_attribute_name, 0)
          end
        end
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
sorcery-0.17.0 lib/sorcery/controller/submodules/brute_force_protection.rb
sorcery-0.16.5 lib/sorcery/controller/submodules/brute_force_protection.rb
sorcery-0.16.4 lib/sorcery/controller/submodules/brute_force_protection.rb
sorcery-0.16.3 lib/sorcery/controller/submodules/brute_force_protection.rb
sorcery-0.16.2 lib/sorcery/controller/submodules/brute_force_protection.rb
sorcery-0.16.1 lib/sorcery/controller/submodules/brute_force_protection.rb
sorcery-0.16.0 lib/sorcery/controller/submodules/brute_force_protection.rb
sorcery-0.13.0 lib/sorcery/controller/submodules/brute_force_protection.rb
sorcery-0.12.0 lib/sorcery/controller/submodules/brute_force_protection.rb
sorcery-0.11.0 lib/sorcery/controller/submodules/brute_force_protection.rb
sorcery-0.10.3 lib/sorcery/controller/submodules/brute_force_protection.rb
sorcery-0.10.2 lib/sorcery/controller/submodules/brute_force_protection.rb
sorcery-0.10.1 lib/sorcery/controller/submodules/brute_force_protection.rb
sorcery-0.10.0 lib/sorcery/controller/submodules/brute_force_protection.rb