Sha256: 4fbdf7876a31024c6444d80868bc1642ad936185a53565ddc0af89de3ac0d5d7
Contents?: true
Size: 716 Bytes
Versions: 22
Compression:
Stored size: 716 Bytes
Contents
# frozen_string_literal: true require 'openssl' module Devise 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 = Devise.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("Devise #{column}") end end end
Version data entries
22 entries across 22 versions & 3 rubygems