Restructure omni services and add Chatwoot research snapshot
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
class Webhooks::ShopifyController < ActionController::API
|
||||
before_action :verify_hmac!
|
||||
|
||||
def events
|
||||
case request.headers['X-Shopify-Topic']
|
||||
when 'shop/redact'
|
||||
handle_shop_redact
|
||||
end
|
||||
|
||||
head :ok
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def verify_hmac!
|
||||
secret = GlobalConfigService.load('SHOPIFY_CLIENT_SECRET', nil)
|
||||
return head :unauthorized if secret.blank?
|
||||
|
||||
data = request.body.read
|
||||
request.body.rewind
|
||||
|
||||
hmac_header = request.headers['X-Shopify-Hmac-SHA256']
|
||||
return head :unauthorized if hmac_header.blank?
|
||||
|
||||
computed = Base64.strict_encode64(OpenSSL::HMAC.digest('SHA256', secret, data))
|
||||
return head :unauthorized unless ActiveSupport::SecurityUtils.secure_compare(computed, hmac_header)
|
||||
end
|
||||
|
||||
def handle_shop_redact
|
||||
shop_domain = params[:shop_domain]
|
||||
return if shop_domain.blank?
|
||||
|
||||
Integrations::Hook.where(app_id: 'shopify', reference_id: shop_domain).destroy_all
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user