cartodb-4.42/lib/cartodb/controller_flows/public/content.rb
2024-04-06 05:25:13 +00:00

49 lines
1.3 KiB
Ruby

module CartoDB
module ControllerFlows
module Public
class Content
def initialize(ctrl, request, renderer)
@ctrl = ctrl
@request = request
@renderer = renderer
end
def render
username = CartoDB.extract_subdomain(@request).strip.downcase
viewed_user = ::User.where(username: username).first
if viewed_user.nil?
org = Organization.where(name: username).first
unless org.nil?
return @renderer.organization_content(org)
end
end
return @renderer.render_404 if viewed_user.nil?
# Redirect to org url if has only user
if eligible_for_redirect?(viewed_user)
# redirect username.host.ext => org-name.host.ext/u/username
@ctrl.redirect_to CartoDB.base_url(viewed_user.organization.name, viewed_user.username) <<
@renderer.organization_path and return
end
@renderer.user_content(viewed_user)
end
private
def eligible_for_redirect?(user)
return if CartoDB.subdomainless_urls?
user.has_organization? && !@request.params[:redirected].present? &&
CartoDB.subdomain_from_request(@request) != user.organization.name
end
end
end
end
end