Module: Devise::Models::Autosigninable

Defined in:
lib/devise_autosigninable/model.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object

include Devise::Models::Lockable



6
7
8
9
10
11
12
13
14
15
16
# File 'lib/devise_autosigninable/model.rb', line 6

def self.included(base)
  base.extend ClassMethods

  base.class_eval do
    before_create :reset_autosignin_token

#         indicator to expire autosignin token
  mattr_accessor :autosignin_expire
  @@autosignin_expire = false
  end
end

Instance Method Details

#autosigninable?Boolean

Returns:

  • (Boolean)


18
19
20
# File 'lib/devise_autosigninable/model.rb', line 18

def autosigninable?
  true
end

#autosigninable_ready?Boolean

Returns:

  • (Boolean)


22
23
24
# File 'lib/devise_autosigninable/model.rb', line 22

def autosigninable_ready?
  !self.autosignin_token.blank?
end

#ensure_autosignin_tokenObject

Generate autosignin token unless already exists.



38
39
40
# File 'lib/devise_autosigninable/model.rb', line 38

def ensure_autosignin_token
  self.reset_autosignin_token unless self.autosigninable_ready?
end

#ensure_autosignin_token!Object

Generate autosignin token unless already exists and save the record.



43
44
45
# File 'lib/devise_autosigninable/model.rb', line 43

def ensure_autosignin_token!
  self.reset_autosignin_token! unless self.autosigninable_ready?
end

#reset_autosignin_tokenObject

Generate new autosignin token



27
28
29
# File 'lib/devise_autosigninable/model.rb', line 27

def reset_autosignin_token
  self.autosignin_token  = self.autosigninable? ? self.class.autosignin_token : nil
end

#reset_autosignin_token!Object

Generate new autosignin token and save the record.



32
33
34
35
# File 'lib/devise_autosigninable/model.rb', line 32

def reset_autosignin_token!
  reset_autosignin_token
  self.save
end

#valid_autosignin_token?(incoming_autosignin_token) ⇒ Boolean

Verifies whether an +incoming_autosignin_token is the user authentication token.

Returns:

  • (Boolean)


49
50
51
# File 'lib/devise_autosigninable/model.rb', line 49

def valid_autosignin_token?(incoming_autosignin_token)
  incoming_autosignin_token == self.autosignin_token
end

#valid_for_autosignin_token_authentication?(attributes) ⇒ Boolean

Checks if a resource is valid upon authentication. for verifying whether an user is allowed to sign in or not. If the user is locked, it should never be allowed.

Returns:

  • (Boolean)


56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/devise_autosigninable/model.rb', line 56

def valid_for_autosignin_token_authentication?(attributes)
  if (result = valid_autosignin_token?(attributes[:autosignin_token])) && self.class.devise_modules.include?(:lockable)
    self.failed_attempts = 0 if self.class.devise_modules.include?(:lockable)
  else
    if self.class.devise_modules.include?(:lockable)
      self.failed_attempts += 1
      lock_access! if failed_attempts > self.class.maximum_attempts
    end
  end
  reset_autosignin_token! if self.class.autosignin_expire
  save(:validate => false) if changed?
  result
end