class Devise::TokenGenerator

Public Class Methods

new(key_generator, digest = "SHA256") click to toggle source
# File lib/devise/token_generator.rb, line 7
def initialize(key_generator, digest = "SHA256")
  @key_generator = key_generator
  @digest = digest
end

Public Instance Methods

digest(klass, column, value) click to toggle source
# File lib/devise/token_generator.rb, line 12
def digest(klass, column, value)
  value.present? && OpenSSL::HMAC.hexdigest(@digest, key_for(column), value.to_s)
end
generate(klass, column) click to toggle source
# File lib/devise/token_generator.rb, line 16
def generate(klass, column)
  key = key_for(column)

  loop do
    raw = Devise.friendly_token
    enc = OpenSSL::HMAC.hexdigest(@digest, key, raw)
    break [raw, enc] unless klass.to_adapter.find_first({ column => enc })
  end
end

Private Instance Methods

key_for(column) click to toggle source
# File lib/devise/token_generator.rb, line 28
def key_for(column)
  @key_generator.generate_key("Devise #{column}")
end