Ability to close projects (read-only) (#3640).
A new permission (Close/reopen project) is available to give non-admin users the ability to close their projects. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9883 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
1 parent
5961a1e70d
commit
ac56c0c99c
21 files changed
+213
-42
No files matched your search
+18
-16
@@ -47,10 +47,11 @@ end
|
||||
|
||||
# Permissions
|
||||
Redmine::AccessControl.map do |map|
|
||||
map.permission :view_project, {:projects => [:show], :activities => [:index]}, :public => true
|
||||
map.permission :search_project, {:search => :index}, :public => true
|
||||
map.permission :view_project, {:projects => [:show], :activities => [:index]}, :public => true, :read => true
|
||||
map.permission :search_project, {:search => :index}, :public => true, :read => true
|
||||
map.permission :add_project, {:projects => [:new, :create]}, :require => :loggedin
|
||||
map.permission :edit_project, {:projects => [:settings, :edit, :update]}, :require => :member
|
||||
map.permission :close_project, {:projects => [:close, :reopen]}, :require => :member, :read => true
|
||||
map.permission :select_project_modules, {:projects => :modules}, :require => :member
|
||||
map.permission :manage_members, {:projects => :settings, :members => [:index, :show, :create, :update, :destroy, :autocomplete]}, :require => :member
|
||||
map.permission :manage_versions, {:projects => :settings, :versions => [:new, :create, :edit, :update, :close_completed, :destroy]}, :require => :member
|
||||
@@ -66,7 +67,8 @@ Redmine::AccessControl.map do |map|
|
||||
:versions => [:index, :show, :status_by],
|
||||
:journals => [:index, :diff],
|
||||
:queries => :index,
|
||||
:reports => [:issue_report, :issue_report_details]}
|
||||
:reports => [:issue_report, :issue_report_details]},
|
||||
:read => true
|
||||
map.permission :add_issues, {:issues => [:new, :create, :update_form], :attachments => :upload}
|
||||
map.permission :edit_issues, {:issues => [:edit, :update, :bulk_edit, :bulk_update, :update_form], :journals => [:new], :attachments => :upload}
|
||||
map.permission :manage_issue_relations, {:issue_relations => [:index, :show, :create, :destroy]}
|
||||
@@ -82,14 +84,14 @@ Redmine::AccessControl.map do |map|
|
||||
map.permission :manage_public_queries, {:queries => [:new, :create, :edit, :update, :destroy]}, :require => :member
|
||||
map.permission :save_queries, {:queries => [:new, :create, :edit, :update, :destroy]}, :require => :loggedin
|
||||
# Watchers
|
||||
map.permission :view_issue_watchers, {}
|
||||
map.permission :view_issue_watchers, {}, :read => true
|
||||
map.permission :add_issue_watchers, {:watchers => :new}
|
||||
map.permission :delete_issue_watchers, {:watchers => :destroy}
|
||||
end
|
||||
|
||||
map.project_module :time_tracking do |map|
|
||||
map.permission :log_time, {:timelog => [:new, :create]}, :require => :loggedin
|
||||
map.permission :view_time_entries, :timelog => [:index, :report, :show]
|
||||
map.permission :view_time_entries, {:timelog => [:index, :report, :show]}, :read => true
|
||||
map.permission :edit_time_entries, {:timelog => [:edit, :update, :destroy, :bulk_edit, :bulk_update]}, :require => :member
|
||||
map.permission :edit_own_time_entries, {:timelog => [:edit, :update, :destroy,:bulk_edit, :bulk_update]}, :require => :loggedin
|
||||
map.permission :manage_project_activities, {:project_enumerations => [:update, :destroy]}, :require => :member
|
||||
@@ -97,27 +99,27 @@ Redmine::AccessControl.map do |map|
|
||||
|
||||
map.project_module :news do |map|
|
||||
map.permission :manage_news, {:news => [:new, :create, :edit, :update, :destroy], :comments => [:destroy]}, :require => :member
|
||||
map.permission :view_news, {:news => [:index, :show]}, :public => true
|
||||
map.permission :view_news, {:news => [:index, :show]}, :public => true, :read => true
|
||||
map.permission :comment_news, {:comments => :create}
|
||||
end
|
||||
|
||||
map.project_module :documents do |map|
|
||||
map.permission :manage_documents, {:documents => [:new, :create, :edit, :update, :destroy, :add_attachment]}, :require => :loggedin
|
||||
map.permission :view_documents, :documents => [:index, :show, :download]
|
||||
map.permission :view_documents, {:documents => [:index, :show, :download]}, :read => true
|
||||
end
|
||||
|
||||
map.project_module :files do |map|
|
||||
map.permission :manage_files, {:files => [:new, :create]}, :require => :loggedin
|
||||
map.permission :view_files, :files => :index, :versions => :download
|
||||
map.permission :view_files, {:files => :index, :versions => :download}, :read => true
|
||||
end
|
||||
|
||||
map.project_module :wiki do |map|
|
||||
map.permission :manage_wiki, {:wikis => [:edit, :destroy]}, :require => :member
|
||||
map.permission :rename_wiki_pages, {:wiki => :rename}, :require => :member
|
||||
map.permission :delete_wiki_pages, {:wiki => :destroy}, :require => :member
|
||||
map.permission :view_wiki_pages, :wiki => [:index, :show, :special, :date_index]
|
||||
map.permission :export_wiki_pages, :wiki => [:export]
|
||||
map.permission :view_wiki_edits, :wiki => [:history, :diff, :annotate]
|
||||
map.permission :view_wiki_pages, {:wiki => [:index, :show, :special, :date_index]}, :read => true
|
||||
map.permission :export_wiki_pages, {:wiki => [:export]}, :read => true
|
||||
map.permission :view_wiki_edits, {:wiki => [:history, :diff, :annotate]}, :read => true
|
||||
map.permission :edit_wiki_pages, :wiki => [:edit, :update, :preview, :add_attachment]
|
||||
map.permission :delete_wiki_pages_attachments, {}
|
||||
map.permission :protect_wiki_pages, {:wiki => :protect}, :require => :member
|
||||
@@ -125,15 +127,15 @@ Redmine::AccessControl.map do |map|
|
||||
|
||||
map.project_module :repository do |map|
|
||||
map.permission :manage_repository, {:repositories => [:new, :create, :edit, :update, :committers, :destroy]}, :require => :member
|
||||
map.permission :browse_repository, :repositories => [:show, :browse, :entry, :raw, :annotate, :changes, :diff, :stats, :graph]
|
||||
map.permission :view_changesets, :repositories => [:show, :revisions, :revision]
|
||||
map.permission :browse_repository, {:repositories => [:show, :browse, :entry, :raw, :annotate, :changes, :diff, :stats, :graph]}, :read => true
|
||||
map.permission :view_changesets, {:repositories => [:show, :revisions, :revision]}, :read => true
|
||||
map.permission :commit_access, {}
|
||||
map.permission :manage_related_issues, {:repositories => [:add_related_issue, :remove_related_issue]}
|
||||
end
|
||||
|
||||
map.project_module :boards do |map|
|
||||
map.permission :manage_boards, {:boards => [:new, :create, :edit, :update, :destroy]}, :require => :member
|
||||
map.permission :view_messages, {:boards => [:index, :show], :messages => [:show]}, :public => true
|
||||
map.permission :view_messages, {:boards => [:index, :show], :messages => [:show]}, :public => true, :read => true
|
||||
map.permission :add_messages, {:messages => [:new, :reply, :quote]}
|
||||
map.permission :edit_messages, {:messages => :edit}, :require => :member
|
||||
map.permission :edit_own_messages, {:messages => :edit}, :require => :loggedin
|
||||
@@ -142,11 +144,11 @@ Redmine::AccessControl.map do |map|
|
||||
end
|
||||
|
||||
map.project_module :calendar do |map|
|
||||
map.permission :view_calendar, :calendars => [:show, :update]
|
||||
map.permission :view_calendar, {:calendars => [:show, :update]}, :read => true
|
||||
end
|
||||
|
||||
map.project_module :gantt do |map|
|
||||
map.permission :view_gantt, :gantts => [:show, :update]
|
||||
map.permission :view_gantt, {:gantts => [:show, :update]}, :read => true
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -54,6 +54,16 @@ module Redmine
|
||||
@loggedin_only_permissions ||= @permissions.select {|p| p.require_loggedin?}
|
||||
end
|
||||
|
||||
def read_action?(action)
|
||||
if action.is_a?(Symbol)
|
||||
perm = permission(action)
|
||||
!perm.nil? && perm.read?
|
||||
else
|
||||
s = "#{action[:controller]}/#{action[:action]}"
|
||||
permissions.detect {|p| p.actions.include?(s) && !p.read?}.nil?
|
||||
end
|
||||
end
|
||||
|
||||
def available_project_modules
|
||||
@available_project_modules ||= @permissions.collect(&:project_module).uniq.compact
|
||||
end
|
||||
@@ -93,6 +103,7 @@ module Redmine
|
||||
@actions = []
|
||||
@public = options[:public] || false
|
||||
@require = options[:require]
|
||||
@read = options[:read] || false
|
||||
@project_module = options[:project_module]
|
||||
hash.each do |controller, actions|
|
||||
if actions.is_a? Array
|
||||
@@ -115,6 +126,10 @@ module Redmine
|
||||
def require_loggedin?
|
||||
@require && (@require == :member || @require == :loggedin)
|
||||
end
|
||||
|
||||
def read?
|
||||
@read
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -244,13 +244,15 @@ module Redmine #:nodoc:
|
||||
# permission :destroy_contacts, { :contacts => :destroy }
|
||||
# permission :view_contacts, { :contacts => [:index, :show] }
|
||||
#
|
||||
# The +options+ argument can be used to make the permission public (implicitly given to any user)
|
||||
# or to restrict users the permission can be given to.
|
||||
# The +options+ argument is a hash that accept the following keys:
|
||||
# * :public => the permission is public if set to true (implicitly given to any user)
|
||||
# * :require => can be set to one of the following values to restrict users the permission can be given to: :loggedin, :member
|
||||
# * :read => set it to true so that the permission is still granted on closed projects
|
||||
#
|
||||
# Examples
|
||||
# # A permission that is implicitly given to any user
|
||||
# # This permission won't appear on the Roles & Permissions setup screen
|
||||
# permission :say_hello, { :example => :say_hello }, :public => true
|
||||
# permission :say_hello, { :example => :say_hello }, :public => true, :read => true
|
||||
#
|
||||
# # A permission that can be given to any user
|
||||
# permission :say_hello, { :example => :say_hello }
|
||||
|
||||
Reference in new issue
Block a user