diff --git a/app/models/environment.rb b/app/models/environment.rb index ffdaffa..ec5ae1e 100644 --- a/app/models/environment.rb +++ b/app/models/environment.rb @@ -12,6 +12,12 @@ class Environment < ActiveRecord::Base 'manage_environment_validators' => N_('Manage environment validators'), } + module Roles + def self.admin + Role.find_by_key('environment_administrator') + end + end + # returns the available features for a Environment, in the form of a # hash, with pairs in the form 'feature_name' => 'Feature name'. def self.available_features diff --git a/app/models/profile.rb b/app/models/profile.rb index bbc0f5b..6013e5a 100644 --- a/app/models/profile.rb +++ b/app/models/profile.rb @@ -10,6 +10,9 @@ class Profile < ActiveRecord::Base def self.member ::Role.find_by_key('profile_member') end + def self.moderator + ::Role.find_by_key('profile_moderator') + end end PERMISSIONS[:profile] = { diff --git a/db/migrate/013_access_control_migration.rb b/db/migrate/013_access_control_migration.rb index 097ceca..0b24a76 100644 --- a/db/migrate/013_access_control_migration.rb +++ b/db/migrate/013_access_control_migration.rb @@ -18,6 +18,10 @@ class AccessControlMigration < ActiveRecord::Migration # create system-defined roles Role.with_scope(:create => { :system => true }) do + + # Environment administrator! + Role.create!(:key => 'environment_administrator', :name => N_('Environment Administrator'), :permissions => ['view_environment_admin_panel','edit_environment_features', 'edit_environment_design', 'manage_environment_categories', 'manage_environment_roles', 'manage_environment_validators']) + Role.create!(:key => 'profile_admin', :name => N_('Profile Administrator'), :permissions => [ 'edit_profile', 'destroy_profile', @@ -27,10 +31,14 @@ class AccessControlMigration < ActiveRecord::Migration 'manage_products', ]) - # members for environments, communities etc + # members for enterprises, communities etc Role.create!(:key => "profile_member", :name => N_('Member'), :permissions => [ - 'post_content' + 'edit_profile', 'post_content', 'manage_products' ]) + + # moderators for enterprises, communities etc + Role.create!(:key => 'profile_moderator', :name => N_('Moderator'), :permissions => [ 'manage_memberships', 'edit_profile_design', 'manage_products' ]) + end end diff --git a/script/anhetegua b/script/anhetegua index 7c603af..95969bd 100755 --- a/script/anhetegua +++ b/script/anhetegua @@ -86,7 +86,7 @@ owner_role = Profile::Roles.admin # root user of the system, admin_role for him, the assignment of the role for him and the ownership of the system homepage root = User.create!(:login => 'root', :email => 'root@noosfero.org', :password => 'root', :password_confirmation => 'root').person -admin_role = Role.create!(:name => 'admin', :permissions => ['view_environment_admin_panel','edit_environment_features', 'edit_environment_design', 'manage_environment_categories', 'manage_environment_roles', 'manage_environment_validators']) +admin_role = Environment::Roles.admin RoleAssignment.create!(:accessor => root, :role => admin_role, :resource => Environment.default) @@ -97,9 +97,8 @@ empa = Enterprise.create!(:name => 'Empreendimento A', :identifier => 'empreendi empa.affiliate(ze, owner_role) colivre.affiliate(ze, owner_role) -member_role = Role.create!(:name => 'membro', :permissions => ['edit_profile', 'post_content', 'manage_products'] ) -moderator_role = Role.create!(:name => 'moderador', :permissions => ['manage_memberships', 'edit_profile_design', 'manage_products'] ) - +member_role = Profile::Roles.member +moderator_role = Profile::Roles.moderator # product categories produtos = ProductCategory.create!(:name => 'Produtos', :environment => Environment.default, :display_color => 4) diff --git a/test/unit/environment_test.rb b/test/unit/environment_test.rb index fcae982..be25f0d 100644 --- a/test/unit/environment_test.rb +++ b/test/unit/environment_test.rb @@ -258,4 +258,9 @@ class EnvironmentTest < Test::Unit::TestCase assert_equal 'my fine environment', env.description end + should 'have admin role' do + Role.expects(:find_by_key).with('environment_administrator').returns(Role.new) + assert_kind_of Role, Environment::Roles.admin + end + end diff --git a/test/unit/profile_test.rb b/test/unit/profile_test.rb index f849f56..9b471cf 100644 --- a/test/unit/profile_test.rb +++ b/test/unit/profile_test.rb @@ -309,6 +309,11 @@ class ProfileTest < Test::Unit::TestCase assert_kind_of Role, Profile::Roles.member end + should 'have moderator role' do + Role.expects(:find_by_key).with('profile_moderator').returns(Role.new) + assert_kind_of Role, Profile::Roles.moderator + end + should 'not have members by default' do assert_equal false, Profile.new.has_members? end -- libgit2 0.21.2