Module: Kingsman::Models::Lockable::ClassMethods

Defined in:
lib/kingsman/models/lockable.rb

Constant Summary collapse

BOTH_STRATEGIES =

List of strategies that are enabled/supported if :both is used.

[:time, :email]

Instance Method Summary collapse

Instance Method Details

#lock_strategy_enabled?(strategy) ⇒ Boolean

Is the lock enabled for the given lock strategy?

Returns:

  • (Boolean)


206
207
208
# File 'lib/kingsman/models/lockable.rb', line 206

def lock_strategy_enabled?(strategy)
  self.lock_strategy == strategy
end

#send_unlock_instructions(attributes = {}) ⇒ Object

Attempt to find a user by its unlock keys. If a record is found, send new unlock instructions to it. If not user is found, returns a new user with an email not found error. Options must contain the user’s unlock keys



179
180
181
182
183
# File 'lib/kingsman/models/lockable.rb', line 179

def send_unlock_instructions(attributes = {})
  lockable = find_or_initialize_with_errors(unlock_keys, attributes, :not_found)
  lockable.resend_unlock_instructions if lockable.persisted?
  lockable
end

#unlock_access_by_token(unlock_token) ⇒ Object

Find a user by its unlock token and try to unlock it. If no user is found, returns a new user with an error. If the user is not locked, creates an error for the user Options must have the unlock_token



189
190
191
192
193
194
195
196
197
# File 'lib/kingsman/models/lockable.rb', line 189

def unlock_access_by_token(unlock_token)
  original_token = unlock_token
  unlock_token   = Kingsman.token_generator.digest(self, :unlock_token, unlock_token)

  lockable = find_or_initialize_with_error_by(:unlock_token, unlock_token)
  lockable.unlock_access! if lockable.persisted?
  lockable.unlock_token = original_token
  lockable
end

#unlock_strategy_enabled?(strategy) ⇒ Boolean

Is the unlock enabled for the given unlock strategy?

Returns:

  • (Boolean)


200
201
202
203
# File 'lib/kingsman/models/lockable.rb', line 200

def unlock_strategy_enabled?(strategy)
  self.unlock_strategy == strategy ||
    (self.unlock_strategy == :both && BOTH_STRATEGIES.include?(strategy))
end