Basic Embedded Shopfronts

This commit is contained in:
Matt-Yorkley
2017-07-21 15:23:11 +01:00
committed by Maikel Linke
parent 113f6565be
commit 782a812596
8 changed files with 227 additions and 17 deletions

View File

@@ -20,6 +20,28 @@ class ApplicationController < ActionController::Base
end
end
def enable_embedded_styles
session[:embedded_shopfront] = true
render json: {}, status: 200
end
def disable_embedded_styles
session.delete :embedded_shopfront
session.delete :shopfront_redirect
render json: {}, status: 200
end
protected
def after_sign_in_path_for(resource_or_scope)
return session[:shopfront_redirect] if session[:shopfront_redirect]
stored_location_for(resource_or_scope) || signed_in_root_path(resource_or_scope)
end
def after_sign_out_path_for(resource_or_scope)
session[:shopfront_redirect] ? session[:shopfront_redirect] : root_path
end
private
def restrict_iframes
@@ -28,13 +50,32 @@ class ApplicationController < ActionController::Base
end
def enable_embedded_shopfront
return unless Spree::Config[:enable_embedded_shopfronts]
whitelist = Spree::Config[:embedded_shopfronts_whitelist]
return unless Spree::Config[:enable_embedded_shopfronts] and whitelist.present?
@session_data = session
whitelist = Spree::Config[:embedded_shopfronts_whitelist] || "'none'"
response.headers.delete 'X-Frame-Options'
response.headers['Content-Security-Policy'] = "frame-ancestors #{whitelist}"
check_embedded_request
set_embedded_layout
end
def check_embedded_request
return unless params[:embedded_shopfront]
# Show embedded shopfront CSS
session[:embedded_shopfront] = true
# Get shopfront slug and set redirect path
if params[:controller] == 'enterprises' and params[:action] == 'shop' and params[:id]
slug = params[:id]
session[:shopfront_redirect] = '/' + slug + '/shop?embedded_shopfront=true'
end
end
def set_embedded_layout
return unless session[:embedded_shopfront]
@shopfront_layout = 'embedded'
end
def action