require "openssl" require "tiny_auth/model" require "tiny_auth/controller" require "tiny_auth/version" module TinyAuth class << self # A secret that is used for hashing tokens. # # If `Rails` is defined, it will attempt to use # `Rails.application.secret_key_base`. # # @raise [RuntimeError] # @return [String] def secret @secret || secret_key_base || missing_secret! end # Configure the secret that is used for hashing tokens. # @param secret [String] def secret=(secret) @secret = secret end # Create a hash from a value using the secret # @param value [String] # @return [String] def hexdigest(value) OpenSSL::HMAC.hexdigest("SHA256", secret, value) end private def secret_key_base Rails.application.secret_key_base if defined? Rails end def missing_secret! raise "You need to configure TinyAuth.secret" end end end