Skip to content

Commit f1b7261

Browse files
rbtgrRedmine Patch Meetup
authored andcommitted
Add permission check
1 parent f8bc1fe commit f1b7261

File tree

4 files changed

+18
-5
lines changed

4 files changed

+18
-5
lines changed

app/controllers/wiki_redirects_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
1919

2020
class WikiRedirectsController < ApplicationController
21-
before_action :find_wiki_redirect
21+
before_action :find_wiki_redirect, :authorize
2222

2323
# /projects/{project_id}/wikis/redirects/{id}
2424
# /projects/project-a/wikis/redirects/222

config/routes.rb

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -191,13 +191,11 @@
191191
match 'preview', :via => [:post, :put, :patch]
192192
post 'protect'
193193
post 'add_attachment'
194-
195194
end
196195
collection do
197196
get 'export'
198197
get 'date_index'
199198
post 'new'
200-
# TODO: Move to member
201199
end
202200
end
203201
match 'wiki', :controller => 'wiki', :action => 'show', :via => :get

lib/redmine.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@
166166
map.permission :view_wiki_edits, {:wiki => [:history, :diff, :annotate]}, :read => true
167167
map.permission :export_wiki_pages, {:wiki => [:export]}, :read => true
168168
map.permission :edit_wiki_pages, :wiki => [:new, :edit, :update, :preview, :add_attachment], :attachments => :upload
169-
map.permission :rename_wiki_pages, {:wiki => :rename}, :require => :member
169+
map.permission :rename_wiki_pages, {:wiki => :rename, :wiki_redirects => :destroy}, :require => :member
170170
map.permission :delete_wiki_pages, {:wiki => [:destroy, :destroy_version]}, :require => :member
171171
map.permission :delete_wiki_pages_attachments, {}
172172
map.permission :protect_wiki_pages, {:wiki => :protect}, :require => :member

test/functional/wiki_redirects_controller_test.rb

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ class WikiRedirectsControllerTest < Redmine::ControllerTest
2626
:issues, :issue_statuses, :trackers
2727

2828
def setup
29-
User.current = User.find(1)
29+
User.current = nil
30+
@request.session[:user_id] = 1
3031
end
3132

3233
def test_destroy
@@ -37,6 +38,20 @@ def test_destroy
3738
delete :destroy, params: { id: wiki_redirect.id, project_id: wiki_page.wiki.project_id, wiki_page_id: wiki_page.id }
3839

3940
# WikiRedirectが消えていること
41+
assert_response :success
4042
assert_not WikiRedirect.where(id: wiki_redirect.id).exists?
4143
end
44+
45+
def test_destroy_without_permission
46+
@request.session[:user_id] = User.generate!.id
47+
48+
wiki_page = WikiPage.find(2)
49+
50+
wiki_redirect = WikiRedirect.create!(wiki_id: 1, title: 'Test', redirects_to: wiki_page.title, redirects_to_wiki_id: 1)
51+
52+
delete :destroy, params: { id: wiki_redirect.id, project_id: wiki_page.wiki.project_id, wiki_page_id: wiki_page.id }
53+
54+
assert_response :forbidden
55+
assert WikiRedirect.where(id: wiki_redirect.id).exists?
56+
end
4257
end

0 commit comments

Comments
 (0)