From b3cf98f7d72d304ef3114a87a0a260b5f8a1f25d Mon Sep 17 00:00:00 2001 From: JoenioCosta Date: Thu, 5 Jun 2008 21:21:06 +0000 Subject: [PATCH] ActionItem378: define permissions to tasks --- app/controllers/my_profile/profile_editor_controller.rb | 2 +- app/models/add_friend.rb | 4 ++++ app/models/add_member.rb | 4 ++++ app/models/create_enterprise.rb | 4 ++++ app/models/task.rb | 5 +++++ test/unit/add_friend_test.rb | 5 +++++ test/unit/add_member_test.rb | 5 +++++ test/unit/change_password_test.rb | 5 +++++ test/unit/create_enterprise_test.rb | 5 +++++ test/unit/task_test.rb | 5 +++++ 10 files changed, 43 insertions(+), 1 deletion(-) diff --git a/app/controllers/my_profile/profile_editor_controller.rb b/app/controllers/my_profile/profile_editor_controller.rb index 58dc79c..f599154 100644 --- a/app/controllers/my_profile/profile_editor_controller.rb +++ b/app/controllers/my_profile/profile_editor_controller.rb @@ -3,7 +3,7 @@ class ProfileEditorController < MyProfileController protect 'edit_profile', :profile, :only => [:index, :edit] def index - @pending_tasks = profile.tasks.pending + @pending_tasks = profile.tasks.pending.select{|i| user.has_permission?(i.permission, profile)} end helper :profile diff --git a/app/models/add_friend.rb b/app/models/add_friend.rb index 51fd104..5f33b61 100644 --- a/app/models/add_friend.rb +++ b/app/models/add_friend.rb @@ -25,4 +25,8 @@ class AddFriend < Task _('%s wants to be your friend') % requestor.name end + def permission + :manage_friends + end + end diff --git a/app/models/add_member.rb b/app/models/add_member.rb index 9ee5678..33af6a2 100644 --- a/app/models/add_member.rb +++ b/app/models/add_member.rb @@ -25,4 +25,8 @@ class AddMember < Task _('%s wants to be a member') % requestor.name end + def permission + :manage_memberships + end + end diff --git a/app/models/create_enterprise.rb b/app/models/create_enterprise.rb index 4c0b7e8..0e2f2c6 100644 --- a/app/models/create_enterprise.rb +++ b/app/models/create_enterprise.rb @@ -164,4 +164,8 @@ class CreateEnterprise < Task msg end + def permission + :validate_enterprise + end + end diff --git a/app/models/task.rb b/app/models/task.rb index bf781c1..5b7a9a9 100644 --- a/app/models/task.rb +++ b/app/models/task.rb @@ -116,6 +116,11 @@ class Task < ActiveRecord::Base nil end + # What permission is required to perform task? + def permission + :perform_task + end + protected # This method must be overrided in subclasses, and its implementation must do diff --git a/test/unit/add_friend_test.rb b/test/unit/add_friend_test.rb index e56e2f5..c5bc5dc 100644 --- a/test/unit/add_friend_test.rb +++ b/test/unit/add_friend_test.rb @@ -82,4 +82,9 @@ class AddFriendTest < ActiveSupport::TestCase assert_equal 'testuser1 wants to be your friend', task.description end + should 'has permission to manage friends' do + t = AddFriend.new + assert_equal :manage_friends, t.permission + end + end diff --git a/test/unit/add_member_test.rb b/test/unit/add_member_test.rb index 1a4c77b..8df19bc 100644 --- a/test/unit/add_member_test.rb +++ b/test/unit/add_member_test.rb @@ -66,4 +66,9 @@ class AddMemberTest < ActiveSupport::TestCase assert_same t.target, t.community end + should 'has permission to manage members' do + t = AddMember.new + assert_equal :manage_memberships, t.permission + end + end diff --git a/test/unit/change_password_test.rb b/test/unit/change_password_test.rb index a53e094..76b2817 100644 --- a/test/unit/change_password_test.rb +++ b/test/unit/change_password_test.rb @@ -105,5 +105,10 @@ class ChangePasswordTest < Test::Unit::TestCase end end + should 'has default permission' do + t1 = Task.new + t2 = ChangePassword.new + assert_equal t1.permission, t2.permission + end end diff --git a/test/unit/create_enterprise_test.rb b/test/unit/create_enterprise_test.rb index 14b4322..8bbe0ce 100644 --- a/test/unit/create_enterprise_test.rb +++ b/test/unit/create_enterprise_test.rb @@ -186,4 +186,9 @@ class CreateEnterpriseTest < Test::Unit::TestCase assert request.errors.invalid?(:identifier) end + should 'has permission to validate enterprise' do + t = CreateEnterprise.new + assert_equal :validate_enterprise, t.permission + end + end diff --git a/test/unit/task_test.rb b/test/unit/task_test.rb index 4f605b8..99f7e14 100644 --- a/test/unit/task_test.rb +++ b/test/unit/task_test.rb @@ -169,6 +169,11 @@ class TaskTest < Test::Unit::TestCase assert_equal [t2], Task.finished end + should 'has perform task permission' do + t = Task.new + assert_equal :perform_task, t.permission + end + protected def sample_user -- libgit2 0.21.2