Sha256: cde6d33ce5498db54212d7755e46a6720891002c650971b81ce7e6fc1a5f90ab
Contents?: true
Size: 722 Bytes
Versions: 2
Compression:
Stored size: 722 Bytes
Contents
# frozen_string_literal: true require 'openssl' module Kingsman class TokenGenerator def initialize(key_generator, digest = "SHA256") @key_generator = key_generator @digest = digest end def digest(klass, column, value) value.present? && OpenSSL::HMAC.hexdigest(@digest, key_for(column), value.to_s) end def generate(klass, column) key = key_for(column) loop do raw = Kingsman.friendly_token enc = OpenSSL::HMAC.hexdigest(@digest, key, raw) break [raw, enc] unless klass.to_adapter.find_first({ column => enc }) end end private def key_for(column) @key_generator.generate_key("Kingsman #{column}") end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
kingsman-0.1.1 | lib/kingsman/token_generator.rb |
kingsman-0.1.0 | lib/kingsman/token_generator.rb |