class Ak4r::TokenGenerator

Constants

DIGEST

Public Class Methods

digest(value) click to toggle source
# File lib/ak4r/token_generator.rb, line 12
def self.digest(value)
  key = generate_key
  value.present? && OpenSSL::HMAC.hexdigest(DIGEST, key, value.to_s)
end
friendly_token(length = 20) click to toggle source
# File lib/ak4r/token_generator.rb, line 30
def self.friendly_token(length = 20)
  # To calculate real characters, we must perform this operation.
  # See SecureRandom.urlsafe_base64
  rlength = (length * 3) / 4
  SecureRandom.urlsafe_base64(rlength).tr('lIO0', 'sxyz')
end
generate() click to toggle source
# File lib/ak4r/token_generator.rb, line 17
def self.generate
  key = generate_key
  loop do
    raw = self.friendly_token
    enc = OpenSSL::HMAC.hexdigest(DIGEST, key, raw)
    break [raw, enc] unless Ak4r::ApiKey.where(key_hash: enc).any?
  end
end
generate_key() click to toggle source
# File lib/ak4r/token_generator.rb, line 26
def self.generate_key
  return  Rails.application.key_generator.generate_key(Ak4r.config.salt)
end