Files
evazion 173e43b192 user upgrades: add upgrade code system.
Add a system for upgrading accounts using upgrade codes. Users purchase
an upgrade code off-site then redeem it on-site to upgrade their account
to Gold. Upgrade codes are randomly pre-generated and are one time use
only. Codes have enough randomness that guessing a code is infeasible.
2022-06-01 18:31:46 -05:00

31 lines
830 B
Ruby

# frozen_string_literal: true
class PaymentTransaction::Shopify < PaymentTransaction
class InvalidWebhookError < StandardError; end
def create!(**params)
nil
end
def refund!(reason = nil)
raise NotImplementedError
end
concerning :WebhookMethods do
class_methods do
def receive_webhook(request)
verify_webhook!(request)
end
private def verify_webhook!(request)
payload = request.body.read
actual_signature = request.headers["X-Shopify-Hmac-Sha256"].to_s
calculated_signature = Base64.strict_encode64(OpenSSL::HMAC.digest("sha256", Danbooru.config.shopify_webhook_secret, payload))
raise InvalidWebhookError unless ActiveSupport::SecurityUtils::secure_compare(actual_signature, calculated_signature)
request
end
end
end
end