module LockableAuth
Constants
- DEFAULT_MAXIMUM_ATTEMPTS
- DEFAULT_UNLOCK_IN
- VERSION
Attributes
lock_enabled[RW]
maximum_attempts[RW]
unlock_in[RW]
Public Instance Methods
access_locked?()
click to toggle source
# File lib/lockable_auth.rb, line 34 def access_locked? locked_at.present? && !lock_expired? end
authenticate(unencrypted_password)
click to toggle source
Calls superclass method
# File lib/lockable_auth.rb, line 38 def authenticate(unencrypted_password) return super unless persisted? unlock_access! if lock_expired? if super && !lock_enabled? self elsif super && !access_locked? unlock_access! self else increment_failed_attemnpts if attempts_exceeded? lock_access! else save(validate: false) end false end end
lock_access!()
click to toggle source
# File lib/lockable_auth.rb, line 23 def lock_access! self.locked_at = Time.now.utc save(validate: false) end
unlock_access!()
click to toggle source
# File lib/lockable_auth.rb, line 28 def unlock_access! self.locked_at = nil self.failed_attempts = 0 save(validate: false) end
Protected Instance Methods
attempts_exceeded?()
click to toggle source
# File lib/lockable_auth.rb, line 66 def attempts_exceeded? self.class.maximum_attempts.nonzero? && (self.failed_attempts >= self.class.maximum_attempts) end
increment_failed_attemnpts()
click to toggle source
# File lib/lockable_auth.rb, line 61 def increment_failed_attemnpts self.failed_attempts ||= 0 self.failed_attempts += 1 end
lock_enabled?()
click to toggle source
# File lib/lockable_auth.rb, line 74 def lock_enabled? self.class.lock_enabled end
lock_expired?()
click to toggle source
# File lib/lockable_auth.rb, line 70 def lock_expired? self.class.unlock_in.to_i.zero? || (locked_at && locked_at < self.class.unlock_in.ago) end