Add link to unredacted element history for moderators
This commit is contained in:
parent
d23763d6cd
commit
533816a3c2
5 changed files with 100 additions and 0 deletions
|
@ -6,6 +6,7 @@ class BrowseController < ApplicationController
|
||||||
before_action -> { check_database_readable(:need_api => true) }
|
before_action -> { check_database_readable(:need_api => true) }
|
||||||
before_action :require_oauth
|
before_action :require_oauth
|
||||||
before_action :update_totp, :only => [:query]
|
before_action :update_totp, :only => [:query]
|
||||||
|
before_action :require_moderator_for_unredacted_history, :only => [:relation_history, :way_history, :node_history]
|
||||||
around_action :web_timeout
|
around_action :web_timeout
|
||||||
authorize_resource :class => false
|
authorize_resource :class => false
|
||||||
|
|
||||||
|
@ -77,4 +78,10 @@ class BrowseController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def query; end
|
def query; end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def require_moderator_for_unredacted_history
|
||||||
|
deny_access(nil) if params[:show_redactions] && !current_user&.moderator?
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -18,6 +18,10 @@
|
||||||
·
|
·
|
||||||
<% end %>
|
<% end %>
|
||||||
<%= link_to t("browse.view_history"), :action => "#{@type}_history" %>
|
<%= link_to t("browse.view_history"), :action => "#{@type}_history" %>
|
||||||
|
<% if current_user&.moderator? %>
|
||||||
|
·
|
||||||
|
<%= link_to(t("browse.view_unredacted_history"), :action => "#{@type}_history", :params => { :show_redactions => true }) %>
|
||||||
|
<% end %>
|
||||||
<% if @feature.version > 1 %>
|
<% if @feature.version > 1 %>
|
||||||
·
|
·
|
||||||
<%= link_to({ :controller => "old_#{@type.pluralize}", :action => :show, :version => @feature.version }, :class => "icon-link") do %>
|
<%= link_to({ :controller => "old_#{@type.pluralize}", :action => :show, :version => @feature.version }, :class => "icon-link") do %>
|
||||||
|
|
|
@ -8,4 +8,11 @@
|
||||||
<%= link_to(t("browse.download_xml"), :controller => "api/old_#{@type.pluralize}", :action => "history") %>
|
<%= link_to(t("browse.download_xml"), :controller => "api/old_#{@type.pluralize}", :action => "history") %>
|
||||||
·
|
·
|
||||||
<%= link_to(t("browse.view_details"), :action => @type) %>
|
<%= link_to(t("browse.view_details"), :action => @type) %>
|
||||||
|
<% if params[:show_redactions] %>
|
||||||
|
·
|
||||||
|
<%= link_to(t("browse.view_history"), :action => "#{@type}_history") %>
|
||||||
|
<% elsif current_user&.moderator? %>
|
||||||
|
·
|
||||||
|
<%= link_to(t("browse.view_unredacted_history"), :action => "#{@type}_history", :params => { :show_redactions => true }) %>
|
||||||
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -329,6 +329,7 @@ en:
|
||||||
other: "%{count} ways"
|
other: "%{count} ways"
|
||||||
download_xml: "Download XML"
|
download_xml: "Download XML"
|
||||||
view_history: "View History"
|
view_history: "View History"
|
||||||
|
view_unredacted_history: "View Unredacted History"
|
||||||
view_details: "View Details"
|
view_details: "View Details"
|
||||||
location: "Location:"
|
location: "Location:"
|
||||||
common_details:
|
common_details:
|
||||||
|
|
|
@ -235,6 +235,87 @@ class BrowseControllerTest < ActionDispatch::IntegrationTest
|
||||||
assert_template "browse/query"
|
assert_template "browse/query"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_anonymous_user_feature_page_secondary_actions
|
||||||
|
node = create(:node, :with_history)
|
||||||
|
get node_path(:id => node)
|
||||||
|
assert_response :success
|
||||||
|
assert_select ".secondary-actions a", :text => "View Details", :count => 0
|
||||||
|
assert_select ".secondary-actions a", :text => "View History", :count => 1
|
||||||
|
assert_select ".secondary-actions a", :text => "View Unredacted History", :count => 0
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_regular_user_feature_page_secondary_actions
|
||||||
|
session_for(create(:user))
|
||||||
|
node = create(:node, :with_history)
|
||||||
|
get node_path(:id => node)
|
||||||
|
assert_response :success
|
||||||
|
assert_select ".secondary-actions a", :text => "View Details", :count => 0
|
||||||
|
assert_select ".secondary-actions a", :text => "View History", :count => 1
|
||||||
|
assert_select ".secondary-actions a", :text => "View Unredacted History", :count => 0
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_moderator_user_feature_page_secondary_actions
|
||||||
|
session_for(create(:moderator_user))
|
||||||
|
node = create(:node, :with_history)
|
||||||
|
get node_path(:id => node)
|
||||||
|
assert_response :success
|
||||||
|
assert_select ".secondary-actions a", :text => "View Details", :count => 0
|
||||||
|
assert_select ".secondary-actions a", :text => "View History", :count => 1
|
||||||
|
assert_select ".secondary-actions a", :text => "View Unredacted History", :count => 1
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_anonymous_user_history_page_secondary_actions
|
||||||
|
node = create(:node, :with_history)
|
||||||
|
get node_history_path(:id => node)
|
||||||
|
assert_response :success
|
||||||
|
assert_select ".secondary-actions a", :text => "View Details", :count => 1
|
||||||
|
assert_select ".secondary-actions a", :text => "View History", :count => 0
|
||||||
|
assert_select ".secondary-actions a", :text => "View Unredacted History", :count => 0
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_regular_user_history_page_secondary_actions
|
||||||
|
session_for(create(:user))
|
||||||
|
node = create(:node, :with_history)
|
||||||
|
get node_history_path(:id => node)
|
||||||
|
assert_response :success
|
||||||
|
assert_select ".secondary-actions a", :text => "View Details", :count => 1
|
||||||
|
assert_select ".secondary-actions a", :text => "View History", :count => 0
|
||||||
|
assert_select ".secondary-actions a", :text => "View Unredacted History", :count => 0
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_moderator_user_history_page_secondary_actions
|
||||||
|
session_for(create(:moderator_user))
|
||||||
|
node = create(:node, :with_history)
|
||||||
|
get node_history_path(:id => node)
|
||||||
|
assert_response :success
|
||||||
|
assert_select ".secondary-actions a", :text => "View Details", :count => 1
|
||||||
|
assert_select ".secondary-actions a", :text => "View History", :count => 0
|
||||||
|
assert_select ".secondary-actions a", :text => "View Unredacted History", :count => 1
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_anonymous_user_unredacted_history_page_secondary_actions
|
||||||
|
node = create(:node, :with_history)
|
||||||
|
get node_history_path(:id => node, :params => { :show_redactions => true })
|
||||||
|
assert_response :redirect
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_regular_user_unredacted_history_page_secondary_actions
|
||||||
|
session_for(create(:user))
|
||||||
|
node = create(:node, :with_history)
|
||||||
|
get node_history_path(:id => node, :params => { :show_redactions => true })
|
||||||
|
assert_response :redirect
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_moderator_user_unredacted_history_page_secondary_actions
|
||||||
|
session_for(create(:moderator_user))
|
||||||
|
node = create(:node, :with_history)
|
||||||
|
get node_history_path(:id => node, :params => { :show_redactions => true })
|
||||||
|
assert_response :success
|
||||||
|
assert_select ".secondary-actions a", :text => "View Details", :count => 1
|
||||||
|
assert_select ".secondary-actions a", :text => "View History", :count => 1
|
||||||
|
assert_select ".secondary-actions a", :text => "View Unredacted History", :count => 0
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
# This is a convenience method for most of the above checks
|
# This is a convenience method for most of the above checks
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue