##// END OF EJS Templates
Split "Manage documents" permission into create, edit and delete permissions (#12401)....
Jean-Philippe Lang -
r10976:48fb02e3839c
parent child
Show More
@@ -0,0 +1,23
1 class SplitDocumentsPermissions < ActiveRecord::Migration
2 def up
3 # :manage_documents permission split into 3 permissions:
4 # :add_documents, :edit_documents and :delete_documents
5 Role.all.each do |role|
6 if role.has_permission?(:manage_documents)
7 role.add_permission! :add_documents, :edit_documents, :delete_documents
8 role.remove_permission! :manage_documents
9 end
10 end
11 end
12
13 def down
14 Role.all.each do |role|
15 if role.has_permission?(:add_documents) ||
16 role.has_permission?(:edit_documents) ||
17 role.has_permission?(:delete_documents)
18 role.remove_permission! :add_documents, :edit_documents, :delete_documents
19 role.add_permission! :manage_documents
20 end
21 end
22 end
23 end
@@ -19,7 +19,7 class Document < ActiveRecord::Base
19 include Redmine::SafeAttributes
19 include Redmine::SafeAttributes
20 belongs_to :project
20 belongs_to :project
21 belongs_to :category, :class_name => "DocumentCategory", :foreign_key => "category_id"
21 belongs_to :category, :class_name => "DocumentCategory", :foreign_key => "category_id"
22 acts_as_attachable :delete_permission => :manage_documents
22 acts_as_attachable :delete_permission => :delete_documents
23
23
24 acts_as_searchable :columns => ['title', "#{table_name}.description"], :include => :project
24 acts_as_searchable :columns => ['title', "#{table_name}.description"], :include => :project
25 acts_as_event :title => Proc.new {|o| "#{l(:label_document)}: #{o.title}"},
25 acts_as_event :title => Proc.new {|o| "#{l(:label_document)}: #{o.title}"},
@@ -1,6 +1,6
1 <div class="contextual">
1 <div class="contextual">
2 <%= link_to l(:label_document_new), new_project_document_path(@project), :class => 'icon icon-add',
2 <%= link_to l(:label_document_new), new_project_document_path(@project), :class => 'icon icon-add',
3 :onclick => 'showAndScrollTo("add-document", "document_title"); return false;' if User.current.allowed_to?(:manage_documents, @project) %>
3 :onclick => 'showAndScrollTo("add-document", "document_title"); return false;' if User.current.allowed_to?(:add_documents, @project) %>
4 </div>
4 </div>
5
5
6 <div id="add-document" style="display:none;">
6 <div id="add-document" style="display:none;">
@@ -1,6 +1,8
1 <div class="contextual">
1 <div class="contextual">
2 <% if User.current.allowed_to?(:manage_documents, @project) %>
2 <% if User.current.allowed_to?(:edit_documents, @project) %>
3 <%= link_to l(:button_edit), edit_document_path(@document), :class => 'icon icon-edit', :accesskey => accesskey(:edit) %>
3 <%= link_to l(:button_edit), edit_document_path(@document), :class => 'icon icon-edit', :accesskey => accesskey(:edit) %>
4 <% end %>
5 <% if User.current.allowed_to?(:delete_documents, @project) %>
4 <%= delete_link document_path(@document) %>
6 <%= delete_link document_path(@document) %>
5 <% end %>
7 <% end %>
6 </div>
8 </div>
@@ -146,7 +146,9 Redmine::AccessControl.map do |map|
146 end
146 end
147
147
148 map.project_module :documents do |map|
148 map.project_module :documents do |map|
149 map.permission :manage_documents, {:documents => [:new, :create, :edit, :update, :destroy, :add_attachment]}, :require => :loggedin
149 map.permission :add_documents, {:documents => [:new, :create, :add_attachment]}, :require => :loggedin
150 map.permission :edit_documents, {:documents => [:edit, :update, :add_attachment]}, :require => :loggedin
151 map.permission :delete_documents, {:documents => [:destroy]}, :require => :loggedin
150 map.permission :view_documents, {:documents => [:index, :show, :download]}, :read => true
152 map.permission :view_documents, {:documents => [:index, :show, :download]}, :read => true
151 end
153 end
152
154
@@ -38,7 +38,9 roles_001:
38 - :manage_news
38 - :manage_news
39 - :comment_news
39 - :comment_news
40 - :view_documents
40 - :view_documents
41 - :manage_documents
41 - :add_documents
42 - :edit_documents
43 - :delete_documents
42 - :view_wiki_pages
44 - :view_wiki_pages
43 - :export_wiki_pages
45 - :export_wiki_pages
44 - :view_wiki_edits
46 - :view_wiki_edits
@@ -89,7 +91,9 roles_002:
89 - :manage_news
91 - :manage_news
90 - :comment_news
92 - :comment_news
91 - :view_documents
93 - :view_documents
92 - :manage_documents
94 - :add_documents
95 - :edit_documents
96 - :delete_documents
93 - :view_wiki_pages
97 - :view_wiki_pages
94 - :view_wiki_edits
98 - :view_wiki_edits
95 - :edit_wiki_pages
99 - :edit_wiki_pages
@@ -131,7 +135,9 roles_003:
131 - :manage_news
135 - :manage_news
132 - :comment_news
136 - :comment_news
133 - :view_documents
137 - :view_documents
134 - :manage_documents
138 - :add_documents
139 - :edit_documents
140 - :delete_documents
135 - :view_wiki_pages
141 - :view_wiki_pages
136 - :view_wiki_edits
142 - :view_wiki_edits
137 - :edit_wiki_pages
143 - :edit_wiki_pages
@@ -163,7 +169,6 roles_004:
163 - :view_time_entries
169 - :view_time_entries
164 - :comment_news
170 - :comment_news
165 - :view_documents
171 - :view_documents
166 - :manage_documents
167 - :view_wiki_pages
172 - :view_wiki_pages
168 - :view_wiki_edits
173 - :view_wiki_edits
169 - :edit_wiki_pages
174 - :edit_wiki_pages
@@ -901,7 +901,7 class UserTest < ActiveSupport::TestCase
901 should "authorize nearly everything for admin users" do
901 should "authorize nearly everything for admin users" do
902 project = Project.find(1)
902 project = Project.find(1)
903 assert ! @admin.member_of?(project)
903 assert ! @admin.member_of?(project)
904 %w(edit_issues delete_issues manage_news manage_documents manage_wiki).each do |p|
904 %w(edit_issues delete_issues manage_news add_documents manage_wiki).each do |p|
905 assert_equal true, @admin.allowed_to?(p.to_sym, project)
905 assert_equal true, @admin.allowed_to?(p.to_sym, project)
906 end
906 end
907 end
907 end
General Comments 0
You need to be logged in to leave comments. Login now