Module: Devise::Models::Autosigninable::ClassMethods
- Defined in:
- lib/devise_autosigninable/model.rb
Constant Summary collapse
- RETRY_COUNT =
20
Instance Method Summary collapse
-
#authenticate_with_autosignin_token(attributes = {}) ⇒ Object
Authenticate a user based on authentication token.
-
#autosignin_token(uniq = false, field = 'autosignin_token') ⇒ Object
generation random autosignin token.
-
#ensure_all_autosignin_tokens(batch_size = 500) ⇒ Object
Generate autosignin tokens unless already exists and save the records.
-
#reset_all_autosignin_tokens(batch_size = 500) ⇒ Object
Generate autosignin tokens and save the records.
Instance Method Details
#authenticate_with_autosignin_token(attributes = {}) ⇒ Object
Authenticate a user based on authentication token.
105 106 107 108 109 110 111 112 |
# File 'lib/devise_autosigninable/model.rb', line 105 def authenticate_with_autosignin_token(attributes={}) resource = find_by_id(attributes[self.to_s.foreign_key.to_sym].to_i) if resource.try(:valid_for_autosignin_token_authentication?, attributes) resource else nil end end |
#autosignin_token(uniq = false, field = 'autosignin_token') ⇒ Object
generation random autosignin token
92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/devise_autosigninable/model.rb', line 92 def autosignin_token(uniq = false, field = 'autosignin_token') if uniq RETRY_COUNT.times do token = Digest::SHA1.hexdigest("--#{Time.now.utc}--#{rand}--") return token unless exists? field => token end raise Exception.new("Couldn't generate #{self.class}:#{field} for #{RETRY_COUNT} times") else Digest::SHA1.hexdigest("--#{Time.now.utc}--#{rand}--") end end |
#ensure_all_autosignin_tokens(batch_size = 500) ⇒ Object
Generate autosignin tokens unless already exists and save the records.
76 77 78 79 80 81 |
# File 'lib/devise_autosigninable/model.rb', line 76 def ensure_all_autosignin_tokens(batch_size=500) user_count = count( :conditions=>{:autosignin_token => nil}) find_in_batches(:batch_size =>batch_size, :conditions=>{:autosignin_token => nil}) do |group| group.each { |user| user.ensure_autosignin_token! } end end |
#reset_all_autosignin_tokens(batch_size = 500) ⇒ Object
Generate autosignin tokens and save the records.
84 85 86 87 88 89 |
# File 'lib/devise_autosigninable/model.rb', line 84 def reset_all_autosignin_tokens(batch_size=500) user_count = count find_in_batches(:batch_size =>batch_size) do |group| group.each { |user| user.reset_autosignin_token! } end end |