37 lines
995 B
Ruby
37 lines
995 B
Ruby
|
# Controller concern to handle foodcoop scope
|
||
|
#
|
||
|
# Includes a +before_filter+ for selecting foodcoop from url.
|
||
|
#
|
||
|
module Concerns::FoodcoopScope
|
||
|
extend ActiveSupport::Concern
|
||
|
|
||
|
included do
|
||
|
before_filter :select_foodcoop
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
# Set config and database connection for each request
|
||
|
# It uses the subdomain to select the appropriate section in the config files
|
||
|
# Use this method as a before filter (first filter!) in ApplicationController
|
||
|
def select_foodcoop
|
||
|
return unless FoodsoftConfig[:multi_coop_install]
|
||
|
|
||
|
foodcoop = params[:foodcoop]
|
||
|
if foodcoop.blank?
|
||
|
FoodsoftConfig.select_default_foodcoop
|
||
|
redirect_to root_url
|
||
|
elsif FoodsoftConfig.allowed_foodcoop? foodcoop
|
||
|
FoodsoftConfig.select_foodcoop foodcoop
|
||
|
else
|
||
|
raise ActionController::RoutingError.new 'Foodcoop Not Found'
|
||
|
end
|
||
|
end
|
||
|
|
||
|
# Always stay in foodcoop url scope
|
||
|
def default_url_options(options = {})
|
||
|
super().merge({foodcoop: FoodsoftConfig.scope})
|
||
|
end
|
||
|
|
||
|
end
|