Module: DeviseCodeAuthenticatable::LoginCode

Extended by:
ActiveSupport::Concern
Included in:
LoginCode
Defined in:
lib/devise_code_authenticatable/login_code.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#default_valuesObject



12
13
14
15
16
# File 'lib/devise_code_authenticatable/login_code.rb', line 12

def default_values
  self.code           ||= rand(10000..99999)
  self.expired        ||= false
  self.retry_times    ||= 0
end

#expire_nowObject



34
35
36
# File 'lib/devise_code_authenticatable/login_code.rb', line 34

def expire_now
  self.expired = true; save
end

#expired?Boolean

Returns:

  • (Boolean)


27
28
29
30
31
32
# File 'lib/devise_code_authenticatable/login_code.rb', line 27

def expired?
  retry_time_limit = 5
  expire_at = (self.created_at || Time.now) + 10.minutes

  self.expired = self.expired || Time.now.after?(expire_at) || self.retry_times.to_i > retry_time_limit
end

#verify(code) ⇒ Object



18
19
20
21
22
23
24
25
# File 'lib/devise_code_authenticatable/login_code.rb', line 18

def verify(code)
  if expired?
    raise ActiveModel::Errors "expired code should never be validated!"
  end

  self.retry_times += 1; save
  self.code == code
end