Sha256: 97f6aba820a85430f54bf70fd4c55cfd1f31739c7054016bb1c967ce4aca3426
Contents?: true
Size: 996 Bytes
Versions: 4
Compression:
Stored size: 996 Bytes
Contents
# frozen_string_literal: true module DuodealerApp module WebhookVerification extend ActiveSupport::Concern included do skip_before_action :verify_authenticity_token, raise: false before_action :verify_request end private def verify_request data = request.raw_post return head :unauthorized unless hmac_valid?(data) end def hmac_valid?(data) secrets = [DuodealerApp.configuration.secret, DuodealerApp.configuration.old_secret].reject(&:blank?) secrets.any? do |secret| digest = OpenSSL::Digest.new("sha256") ActiveSupport::SecurityUtils.secure_compare( duodealer_hmac, Base64.strict_encode64(OpenSSL::HMAC.digest(digest, secret, data)) ) end end def account_domain request.headers["HTTP_X_DUODEALER_ACCOUNT_DOMAIN"] end def duodealer_hmac request.headers["HTTP_X_DUODEALER_HMAC_SHA256"] end end end
Version data entries
4 entries across 4 versions & 1 rubygems