2010-04-11 23:59:18 +00:00
|
|
|
module Locomotive
|
2010-07-22 22:10:40 +00:00
|
|
|
module Routing
|
2010-04-11 23:59:18 +00:00
|
|
|
module SiteDispatcher
|
2010-07-22 22:10:40 +00:00
|
|
|
|
2010-06-16 14:43:29 +00:00
|
|
|
extend ActiveSupport::Concern
|
2010-07-22 22:10:40 +00:00
|
|
|
|
2010-06-16 14:43:29 +00:00
|
|
|
included do
|
2010-07-22 22:10:40 +00:00
|
|
|
if self.respond_to?(:before_filter)
|
|
|
|
before_filter :fetch_site
|
|
|
|
|
|
|
|
helper_method :current_site
|
|
|
|
end
|
2010-04-11 23:59:18 +00:00
|
|
|
end
|
|
|
|
|
2012-02-05 23:54:09 +00:00
|
|
|
protected
|
2010-07-22 22:10:40 +00:00
|
|
|
|
2012-02-05 23:54:09 +00:00
|
|
|
def fetch_site
|
|
|
|
Locomotive.log "[fetch site] host = #{request.host} / #{request.env['HTTP_HOST']}"
|
2010-07-22 22:10:40 +00:00
|
|
|
|
2012-02-05 23:54:09 +00:00
|
|
|
if Locomotive.config.multi_sites?
|
|
|
|
@current_site ||= Site.match_domain(request.host).first
|
|
|
|
else
|
|
|
|
@current_site ||= Site.first
|
2010-04-11 23:59:18 +00:00
|
|
|
end
|
2012-02-05 23:54:09 +00:00
|
|
|
end
|
2010-07-22 22:10:40 +00:00
|
|
|
|
2012-02-05 23:54:09 +00:00
|
|
|
def current_site
|
|
|
|
@current_site || fetch_site
|
|
|
|
end
|
2011-01-03 10:50:09 +00:00
|
|
|
|
2012-02-05 23:54:09 +00:00
|
|
|
def require_site
|
|
|
|
return true if current_site
|
2010-10-27 00:11:44 +00:00
|
|
|
|
2012-02-05 23:54:09 +00:00
|
|
|
redirect_to installation_url and return false if Locomotive::Account.count == 0 || Locomotive::Site.count == 0
|
2010-09-21 11:45:34 +00:00
|
|
|
|
2012-02-05 23:54:09 +00:00
|
|
|
render_no_site_error and return false
|
|
|
|
end
|
2010-07-22 22:10:40 +00:00
|
|
|
|
2012-02-05 23:54:09 +00:00
|
|
|
def render_no_site_error
|
2012-03-05 08:09:54 +00:00
|
|
|
render :template => '/locomotive/errors/no_site', :layout => false, :status => :not_found
|
2012-02-05 23:54:09 +00:00
|
|
|
end
|
2011-02-22 09:34:27 +00:00
|
|
|
|
2012-02-05 23:54:09 +00:00
|
|
|
def validate_site_membership
|
|
|
|
return true if current_site.present? && current_site.accounts.include?(current_locomotive_account)
|
2010-07-22 22:10:40 +00:00
|
|
|
|
2012-02-05 23:54:09 +00:00
|
|
|
sign_out(current_locomotive_account)
|
|
|
|
flash[:alert] = I18n.t(:no_membership, :scope => [:devise, :failure, :locomotive])
|
|
|
|
redirect_to new_locomotive_account_session_url and return false
|
2010-04-11 23:59:18 +00:00
|
|
|
end
|
2010-07-22 22:10:40 +00:00
|
|
|
|
|
|
|
end
|
2012-02-05 23:54:09 +00:00
|
|
|
|
2010-07-22 22:10:40 +00:00
|
|
|
end
|
2010-07-23 20:09:54 +00:00
|
|
|
end
|