@@ -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 => : |
|
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?(: |
|
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?(: |
|
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 : |
|
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 |
- : |
|
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 |
- : |
|
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 |
- : |
|
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 |
|
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