Merged 0.6 branch into trunk.

Permissions management was rewritten. Some permissions can now be specifically defined for non member and anonymous users.
This migration:
* is irreversible (please, don't forget to *backup* your database before upgrading)
* resets role's permissions (go to "Admin -> Roles & Permissions" to set them after upgrading)

git-svn-id: http://redmine.rubyforge.org/svn/trunk@674 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang
2007-08-29 16:52:35 +00:00
parent 8da5bad295
commit 603e11d7a5
93 changed files with 1120 additions and 1235 deletions
-559
View File
@@ -1,559 +0,0 @@
---
permissions_052:
action: destroy_comment
id: 52
description: label_comment_delete
controller: news
mail_enabled: false
mail_option: false
sort: 1133
is_public: false
permissions_041:
action: add_file
id: 41
description: button_add
controller: projects
mail_enabled: false
mail_option: true
sort: 1320
is_public: false
permissions_030:
action: destroy
id: 30
description: button_delete
controller: news
mail_enabled: false
mail_option: false
sort: 1122
is_public: false
permissions_019:
action: download
id: 19
description: button_download
controller: issues
mail_enabled: false
mail_option: false
sort: 1010
is_public: true
permissions_008:
action: edit
id: 8
description: button_edit
controller: members
mail_enabled: false
mail_option: false
sort: 221
is_public: false
permissions_053:
action: add_query
id: 53
description: button_create
controller: projects
mail_enabled: false
mail_option: false
sort: 600
is_public: false
permissions_042:
action: destroy_file
id: 42
description: button_delete
controller: versions
mail_enabled: false
mail_option: false
sort: 1322
is_public: false
permissions_031:
action: list_documents
id: 31
description: button_list
controller: projects
mail_enabled: false
mail_option: false
sort: 1200
is_public: true
permissions_020:
action: add_issue
id: 20
description: button_add
controller: projects
mail_enabled: true
mail_option: true
sort: 1050
is_public: false
permissions_009:
action: destroy
id: 9
description: button_delete
controller: members
mail_enabled: false
mail_option: false
sort: 222
is_public: false
permissions_054:
action: show
id: 54
description: button_view
controller: repositories
mail_enabled: false
mail_option: false
sort: 1450
is_public: true
permissions_043:
action: move_issues
id: 43
description: button_move
controller: projects
mail_enabled: false
mail_option: false
sort: 1061
is_public: false
permissions_032:
action: show
id: 32
description: button_view
controller: documents
mail_enabled: false
mail_option: false
sort: 1201
is_public: true
permissions_021:
action: edit
id: 21
description: button_edit
controller: issues
mail_enabled: false
mail_option: false
sort: 1055
is_public: false
permissions_010:
action: add_version
id: 10
description: button_add
controller: projects
mail_enabled: false
mail_option: false
sort: 320
is_public: false
permissions_055:
action: browse
id: 55
description: label_browse
controller: repositories
mail_enabled: false
mail_option: false
sort: 1460
is_public: true
permissions_044:
action: add_note
id: 44
description: label_add_note
controller: issues
mail_enabled: false
mail_option: true
sort: 1057
is_public: false
permissions_033:
action: download
id: 33
description: button_download
controller: documents
mail_enabled: false
mail_option: false
sort: 1202
is_public: true
permissions_022:
action: change_status
id: 22
description: label_change_status
controller: issues
mail_enabled: true
mail_option: true
sort: 1060
is_public: false
permissions_011:
action: edit
id: 11
description: button_edit
controller: versions
mail_enabled: false
mail_option: false
sort: 321
is_public: false
permissions_056:
action: entry
id: 56
description: entry
controller: repositories
mail_enabled: false
mail_option: false
sort: 1462
is_public: true
permissions_045:
action: export_issues_pdf
id: 45
description: label_export_pdf
controller: projects
mail_enabled: false
mail_option: false
sort: 1002
is_public: true
permissions_034:
action: add_document
id: 34
description: button_add
controller: projects
mail_enabled: false
mail_option: true
sort: 1220
is_public: false
permissions_023:
action: destroy
id: 23
description: button_delete
controller: issues
mail_enabled: false
mail_option: false
sort: 1065
is_public: false
permissions_012:
action: destroy
id: 12
description: button_delete
controller: versions
mail_enabled: false
mail_option: false
sort: 322
is_public: false
permissions_001:
action: show
id: 1
description: label_overview
controller: projects
mail_enabled: false
mail_option: false
sort: 100
is_public: true
permissions_057:
action: revisions
id: 57
description: label_view_revisions
controller: repositories
mail_enabled: false
mail_option: false
sort: 1470
is_public: true
permissions_046:
action: export_pdf
id: 46
description: label_export_pdf
controller: issues
mail_enabled: false
mail_option: false
sort: 1015
is_public: true
permissions_035:
action: edit
id: 35
description: button_edit
controller: documents
mail_enabled: false
mail_option: false
sort: 1221
is_public: false
permissions_024:
action: add_attachment
id: 24
description: label_attachment_new
controller: issues
mail_enabled: false
mail_option: true
sort: 1070
is_public: false
permissions_013:
action: add_issue_category
id: 13
description: button_add
controller: projects
mail_enabled: false
mail_option: false
sort: 420
is_public: false
permissions_002:
action: changelog
id: 2
description: label_change_log
controller: projects
mail_enabled: false
mail_option: false
sort: 105
is_public: true
permissions_058:
action: revision
id: 58
description: label_view_revisions
controller: repositories
mail_enabled: false
mail_option: false
sort: 1472
is_public: true
permissions_047:
action: activity
id: 47
description: label_activity
controller: projects
mail_enabled: false
mail_option: false
sort: 160
is_public: true
permissions_036:
action: destroy
id: 36
description: button_delete
controller: documents
mail_enabled: false
mail_option: false
sort: 1222
is_public: false
permissions_025:
action: destroy_attachment
id: 25
description: label_attachment_delete
controller: issues
mail_enabled: false
mail_option: false
sort: 1075
is_public: false
permissions_014:
action: edit
id: 14
description: button_edit
controller: issue_categories
mail_enabled: false
mail_option: false
sort: 421
is_public: false
permissions_003:
action: issue_report
id: 3
description: label_report_plural
controller: reports
mail_enabled: false
mail_option: false
sort: 110
is_public: true
permissions_059:
action: diff
id: 59
description: diff
controller: repositories
mail_enabled: false
mail_option: false
sort: 1480
is_public: true
permissions_048:
action: calendar
id: 48
description: label_calendar
controller: projects
mail_enabled: false
mail_option: false
sort: 165
is_public: true
permissions_037:
action: add_attachment
id: 37
description: label_attachment_new
controller: documents
mail_enabled: false
mail_option: true
sort: 1223
is_public: false
permissions_026:
action: list_news
id: 26
description: button_list
controller: projects
mail_enabled: false
mail_option: false
sort: 1100
is_public: true
permissions_015:
action: destroy
id: 15
description: button_delete
controller: issue_categories
mail_enabled: false
mail_option: false
sort: 422
is_public: false
permissions_004:
action: settings
id: 4
description: label_settings
controller: projects
mail_enabled: false
mail_option: false
sort: 150
is_public: false
permissions_060:
action: search
id: 61
description: label_search
controller: projects
mail_enabled: false
mail_option: false
sort: 130
is_public: true
permissions_049:
action: gantt
id: 49
description: label_gantt
controller: projects
mail_enabled: false
mail_option: false
sort: 166
is_public: true
permissions_038:
action: destroy_attachment
id: 38
description: label_attachment_delete
controller: documents
mail_enabled: false
mail_option: false
sort: 1224
is_public: false
permissions_027:
action: show
id: 27
description: button_view
controller: news
mail_enabled: false
mail_option: false
sort: 1101
is_public: true
permissions_016:
action: list_issues
id: 16
description: button_list
controller: projects
mail_enabled: false
mail_option: false
sort: 1000
is_public: true
permissions_005:
action: edit
id: 5
description: button_edit
controller: projects
mail_enabled: false
mail_option: false
sort: 151
is_public: false
permissions_061:
action: search
id: 62
description: label_search
controller: projects
mail_enabled: false
mail_option: false
sort: 130
is_public: true
permissions_062:
action: roadmap
id: 63
description: label_roadmap
controller: projects
mail_enabled: false
mail_option: false
sort: 107
is_public: true
permissions_050:
action: history
id: 50
description: label_history
controller: issues
mail_enabled: false
mail_option: false
sort: 1006
is_public: true
permissions_039:
action: list_files
id: 39
description: button_list
controller: projects
mail_enabled: false
mail_option: false
sort: 1300
is_public: true
permissions_028:
action: add_news
id: 28
description: button_add
controller: projects
mail_enabled: false
mail_option: false
sort: 1120
is_public: false
permissions_017:
action: export_issues_csv
id: 17
description: label_export_csv
controller: projects
mail_enabled: false
mail_option: false
sort: 1001
is_public: true
permissions_006:
action: list_members
id: 6
description: button_list
controller: projects
mail_enabled: false
mail_option: false
sort: 200
is_public: true
permissions_051:
action: add_comment
id: 51
description: label_comment_add
controller: news
mail_enabled: false
mail_option: false
sort: 1130
is_public: false
permissions_040:
action: download
id: 40
description: button_download
controller: versions
mail_enabled: false
mail_option: false
sort: 1301
is_public: true
permissions_029:
action: edit
id: 29
description: button_edit
controller: news
mail_enabled: false
mail_option: false
sort: 1121
is_public: false
permissions_018:
action: show
id: 18
description: button_view
controller: issues
mail_enabled: false
mail_option: false
sort: 1005
is_public: true
permissions_007:
action: add_member
id: 7
description: button_add
controller: projects
mail_enabled: false
mail_option: false
sort: 220
is_public: false
-163
View File
@@ -1,163 +0,0 @@
---
permissions_roles_054:
role_id: 3
permission_id: 44
permissions_roles_043:
role_id: 2
permission_id: 25
permissions_roles_032:
role_id: 1
permission_id: 42
permissions_roles_021:
role_id: 1
permission_id: 22
permissions_roles_010:
role_id: 1
permission_id: 4
permissions_roles_044:
role_id: 3
permission_id: 22
permissions_roles_033:
role_id: 2
permission_id: 22
permissions_roles_022:
role_id: 1
permission_id: 38
permissions_roles_011:
role_id: 1
permission_id: 20
permissions_roles_045:
role_id: 1
permission_id: 12
permissions_roles_034:
role_id: 2
permission_id: 44
permissions_roles_023:
role_id: 2
permission_id: 15
permissions_roles_012:
role_id: 1
permission_id: 36
permissions_roles_001:
role_id: 1
permission_id: 14
permissions_roles_046:
role_id: 1
permission_id: 29
permissions_roles_035:
role_id: 1
permission_id: 10
permissions_roles_024:
role_id: 2
permission_id: 42
permissions_roles_013:
role_id: 2
permission_id: 13
permissions_roles_002:
role_id: 1
permission_id: 34
permissions_roles_047:
role_id: 2
permission_id: 4
permissions_roles_036:
role_id: 1
permission_id: 25
permissions_roles_025:
role_id: 1
permission_id: 8
permissions_roles_014:
role_id: 2
permission_id: 38
permissions_roles_003:
role_id: 2
permission_id: 11
permissions_roles_048:
role_id: 2
permission_id: 34
permissions_roles_037:
role_id: 1
permission_id: 43
permissions_roles_026:
role_id: 1
permission_id: 23
permissions_roles_015:
role_id: 1
permission_id: 5
permissions_roles_004:
role_id: 2
permission_id: 36
permissions_roles_049:
role_id: 3
permission_id: 24
permissions_roles_038:
role_id: 2
permission_id: 24
permissions_roles_027:
role_id: 1
permission_id: 41
permissions_roles_016:
role_id: 1
permission_id: 21
permissions_roles_005:
role_id: 1
permission_id: 53
permissions_roles_050:
role_id: 1
permission_id: 13
permissions_roles_039:
role_id: 3
permission_id: 20
permissions_roles_028:
role_id: 2
permission_id: 20
permissions_roles_017:
role_id: 1
permission_id: 37
permissions_roles_006:
role_id: 1
permission_id: 15
permissions_roles_051:
role_id: 1
permission_id: 30
permissions_roles_040:
role_id: 1
permission_id: 11
permissions_roles_029:
role_id: 2
permission_id: 43
permissions_roles_018:
role_id: 2
permission_id: 14
permissions_roles_007:
role_id: 1
permission_id: 35
permissions_roles_052:
role_id: 2
permission_id: 10
permissions_roles_041:
role_id: 1
permission_id: 28
permissions_roles_030:
role_id: 1
permission_id: 9
permissions_roles_019:
role_id: 2
permission_id: 41
permissions_roles_008:
role_id: 2
permission_id: 12
permissions_roles_053:
role_id: 2
permission_id: 35
permissions_roles_042:
role_id: 1
permission_id: 44
permissions_roles_031:
role_id: 1
permission_id: 24
permissions_roles_020:
role_id: 1
permission_id: 7
permissions_roles_009:
role_id: 2
permission_id: 37
+151
View File
@@ -1,10 +1,161 @@
---
roles_004:
name: Non member
id: 4
builtin: 1
permissions: |
---
- :add_issues
- :edit_issues
- :manage_issue_relations
- :add_issue_notes
- :change_issue_status
- :move_issues
- :save_queries
- :view_gantt
- :view_calendar
- :log_time
- :view_time_entries
- :comment_news
- :view_documents
- :manage_documents
- :view_wiki_pages
- :edit_wiki_pages
- :add_messages
- :view_files
- :manage_files
- :browse_repository
- :view_changesets
position: 5
roles_005:
name: Anonymous
id: 5
builtin: 2
permissions: |
---
- :view_gantt
- :view_calendar
- :view_time_entries
- :view_documents
- :view_wiki_pages
- :edit_wiki_pages
- :view_files
- :browse_repository
- :view_changesets
position: 6
roles_001:
name: Manager
id: 1
builtin: 0
permissions: |
---
- :edit_project
- :manage_members
- :manage_versions
- :manage_categories
- :add_issues
- :edit_issues
- :manage_issue_relations
- :add_issue_notes
- :change_issue_status
- :move_issues
- :delete_issues
- :manage_pulic_queries
- :save_queries
- :view_gantt
- :view_calendar
- :log_time
- :view_time_entries
- :manage_news
- :comment_news
- :view_documents
- :manage_documents
- :view_wiki_pages
- :edit_wiki_pages
- :delete_wiki_pages
- :add_messages
- :manage_boards
- :view_files
- :manage_files
- :browse_repository
- :view_changesets
position: 2
roles_002:
name: Developer
id: 2
builtin: 0
permissions: |
---
- :edit_project
- :manage_members
- :manage_versions
- :manage_categories
- :add_issues
- :edit_issues
- :manage_issue_relations
- :add_issue_notes
- :change_issue_status
- :move_issues
- :delete_issues
- :manage_pulic_queries
- :save_queries
- :view_gantt
- :view_calendar
- :log_time
- :view_time_entries
- :manage_news
- :comment_news
- :view_documents
- :manage_documents
- :view_wiki_pages
- :edit_wiki_pages
- :delete_wiki_pages
- :add_messages
- :manage_boards
- :view_files
- :manage_files
- :browse_repository
- :view_changesets
position: 3
roles_003:
name: Reporter
id: 3
builtin: 0
permissions: |
---
- :edit_project
- :manage_members
- :manage_versions
- :manage_categories
- :add_issues
- :edit_issues
- :manage_issue_relations
- :add_issue_notes
- :change_issue_status
- :move_issues
- :delete_issues
- :manage_pulic_queries
- :save_queries
- :view_gantt
- :view_calendar
- :log_time
- :view_time_entries
- :manage_news
- :comment_news
- :view_documents
- :manage_documents
- :view_wiki_pages
- :edit_wiki_pages
- :delete_wiki_pages
- :add_messages
- :manage_boards
- :view_files
- :manage_files
- :browse_repository
- :view_changesets
position: 4
+1 -1
View File
@@ -58,7 +58,7 @@ class FeedsControllerTest < Test::Unit::TestCase
def test_rss_key
user = User.find(2)
key = user.get_or_create_rss_key.value
key = user.rss_key
get :news, :project_id => 2, :key => key
assert_response :success
+1 -8
View File
@@ -22,7 +22,7 @@ require 'projects_controller'
class ProjectsController; def rescue_action(e) raise e end; end
class ProjectsControllerTest < Test::Unit::TestCase
fixtures :projects, :permissions
fixtures :projects, :users, :roles
def setup
@controller = ProjectsController.new
@@ -50,13 +50,6 @@ class ProjectsControllerTest < Test::Unit::TestCase
assert_not_nil assigns(:project)
end
def test_list_members
get :list_members, :id => 1
assert_response :success
assert_template 'list_members'
assert_not_nil assigns(:members)
end
def test_list_documents
get :list_documents, :id => 1
assert_response :success
@@ -11,6 +11,7 @@ class SearchControllerTest < Test::Unit::TestCase
@controller = SearchController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
User.current = nil
end
def test_search_for_projects
+2 -2
View File
@@ -1,7 +1,7 @@
require "#{File.dirname(__FILE__)}/../test_helper"
class IssuesTest < ActionController::IntegrationTest
fixtures :projects, :users, :trackers, :issue_statuses, :issues, :permissions, :permissions_roles, :enumerations
fixtures :projects, :users, :trackers, :issue_statuses, :issues, :enumerations
# create an issue
def test_add_issue
@@ -38,7 +38,7 @@ class IssuesTest < ActionController::IntegrationTest
def test_issue_attachements
log_user('jsmith', 'jsmith')
post "issues/add_attachment/1", { 'attachments[]' => ActionController::TestUploadedFile.new(Test::Unit::TestCase.fixture_path + '/files/testfile.txt', 'text/plain') }
post "issues/add_note/1", { :notes => 'Some notes', 'attachments[]' => ActionController::TestUploadedFile.new(Test::Unit::TestCase.fixture_path + '/files/testfile.txt', 'text/plain') }
assert_redirected_to "issues/show/1"
# make sure attachment was saved
+2 -2
View File
@@ -31,9 +31,9 @@ class ProjectsTest < ActionController::IntegrationTest
assert !Project.find(1).active?
get "projects/show", :id => 1
assert_response :missing
assert_response 403
get "projects/show", :id => subproject.id
assert_response :missing
assert_response 403
post "projects/unarchive", :id => 1
assert_redirected_to "admin/projects"
+1 -1
View File
@@ -18,7 +18,7 @@
require File.dirname(__FILE__) + '/../test_helper'
class MailHandlerTest < Test::Unit::TestCase
fixtures :users, :projects, :roles, :members, :permissions, :issues, :permissions_roles, :trackers, :enumerations
fixtures :users, :projects, :roles, :members, :issues, :trackers, :enumerations
FIXTURES_PATH = File.dirname(__FILE__) + '/../fixtures'
CHARSET = "utf-8"
+5 -9
View File
@@ -88,16 +88,12 @@ class UserTest < Test::Unit::TestCase
end
def test_rss_key
assert_nil @jsmith.rss_key
key = @jsmith.get_or_create_rss_key
assert_kind_of Token, key
assert_equal 40, key.value.length
assert_nil @jsmith.rss_token
key = @jsmith.rss_key
assert_equal 40, key.length
@jsmith.reload
assert_equal key.value, @jsmith.get_or_create_rss_key.value
@jsmith.reload
assert_equal key.value, @jsmith.rss_key.value
assert_equal key, @jsmith.rss_key
end
def test_role_for_project
@@ -107,6 +103,6 @@ class UserTest < Test::Unit::TestCase
assert_equal "Manager", role.name
# user with no role
assert_nil @dlopper.role_for_project(Project.find(2))
assert !@dlopper.role_for_project(Project.find(2)).member?
end
end