X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/3cfb8b7d053edfba454dbcb1eff09382b5dca193..316ce7b4e94cf92ee4e231417f5ef741a1619119:/app/controllers/api/changesets/downloads_controller.rb diff --git a/app/controllers/api/changesets/downloads_controller.rb b/app/controllers/api/changesets/downloads_controller.rb index 99f0182b5..1abc9e459 100644 --- a/app/controllers/api/changesets/downloads_controller.rb +++ b/app/controllers/api/changesets/downloads_controller.rb @@ -1,6 +1,8 @@ module Api module Changesets class DownloadsController < ApiController + before_action :setup_user_auth + authorize_resource :changeset before_action :set_request_formats @@ -22,9 +24,15 @@ module Api # get all the elements in the changeset which haven't been redacted # and stick them in a big array. - elements = [changeset.old_nodes.unredacted, - changeset.old_ways.unredacted, - changeset.old_relations.unredacted].flatten + elements = if show_redactions? + [changeset.old_nodes, + changeset.old_ways, + changeset.old_relations].flatten + else + [changeset.old_nodes.unredacted, + changeset.old_ways.unredacted, + changeset.old_relations.unredacted].flatten + end # sort the elements by timestamp and version number, as this is the # almost sensible ordering available. this would be much nicer if @@ -56,6 +64,12 @@ module Api format.xml end end + + private + + def show_redactions? + current_user&.moderator? && params[:show_redactions] == "true" + end end end end