Skip to content

Instantly share code, notes, and snippets.

@moxie
Created September 1, 2011 01:18
Show Gist options
  • Save moxie/1185167 to your computer and use it in GitHub Desktop.
Save moxie/1185167 to your computer and use it in GitHub Desktop.
def redirect_for_geo_partner
return unless request.env['GEOIP_COUNTRY_CODE'] && geo_partner = Partner.find_by_country(request.env['GEOIP_COUNTRY_CODE'])
desired_path = request.path
if logged_in?
if on_partner_site?
if current_user.referable.nil? || (current_user.referable && !current_user.referable.kind_of?(Partner))
# This user has no partner but is on a partner site. Kick them back to app.
redirect_to "http://#{HOST}" + desired_path
elsif current_user.referable && current_user.referable.kind_of?(Partner) && current_user.referable != @current_partner
# This user has a partner, but is on the wrong partner site, redirect them to their partner
redirect_to "http://#{current_user.referable.subdomain}.#{ROOT_HOST}" + desired_path
end
else
if current_user.referable && current_user.referable.kind_of?(Partner)
# This user has a partner, but is not on a partner site, redirect them to their partner
redirect_to "http://#{current_user.referable.subdomain}.#{ROOT_HOST}" + desired_path
else
# This user is where they belong
return
end
end
else
# Redirect anonymous users to the geo_partner equivalent page
redirect_to "http://#{geo_partner.subdomain}.#{ROOT_HOST}" + desired_path
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment