X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/f4d1d97848306e71b6525c58f2e5691b8aa686b7..97bb13595750d2ba5d03a5abe2ede7cd11a8a481:/app/controllers/application_controller.rb diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 517b11e14..bb32e7e6e 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -349,7 +349,7 @@ class ApplicationController < ActionController::Base elsif current_user set_locale respond_to do |format| - format.html { redirect_to :controller => "errors", :action => "forbidden" } + format.html { redirect_to :controller => "/errors", :action => "forbidden" } format.any { report_error t("application.permission_denied"), :forbidden } end elsif request.get? @@ -381,19 +381,23 @@ class ApplicationController < ActionController::Base # clean any referer parameter def safe_referer(referer) - referer = URI.parse(referer) + begin + referer = URI.parse(referer) + + if referer.scheme == "http" || referer.scheme == "https" + referer.scheme = nil + referer.host = nil + referer.port = nil + elsif referer.scheme || referer.host || referer.port + referer = nil + end - if referer.scheme == "http" || referer.scheme == "https" - referer.scheme = nil - referer.host = nil - referer.port = nil - elsif referer.scheme || referer.host || referer.port + referer = nil if referer&.path&.first != "/" + rescue URI::InvalidURIError referer = nil end - referer = nil if referer&.path&.first != "/" - - referer.to_s + referer&.to_s end def scope_enabled?(scope)