Class: Ak4r::TokenGenerator
- Inherits:
-
Object
- Object
- Ak4r::TokenGenerator
- Defined in:
- lib/ak4r/token_generator.rb
Constant Summary collapse
- DIGEST =
"SHA256"
Class Method Summary collapse
- .digest(value) ⇒ Object
- .friendly_token(length = 20) ⇒ Object
- .generate ⇒ Object
- .generate_key ⇒ Object
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 |
.generate ⇒ Object
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(key_hash: enc).any? end end |
.generate_key ⇒ Object
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 |