Class: Ak4r::TokenGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/ak4r/token_generator.rb

Constant Summary collapse

DIGEST =
"SHA256"

Class Method Summary collapse

Class Method Details

.digest(value) ⇒ Object



12
13
14
15
# 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) ⇒ Object



30
31
32
33
34
35
# 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

.generateObject



17
18
19
20
21
22
23
24
# 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(hash: enc).any?
  end
end

.generate_keyObject



26
27
28
# File 'lib/ak4r/token_generator.rb', line 26

def self.generate_key
  return  Rails.application.key_generator.generate_key(Ak4r.config.salt)
end