Commit 746963680b68f3095022172855b780c376cf96fe

Authored by Antonio Terceiro
1 parent d95b90a2

ActionItem1172: creating role together with environment

app/models/environment.rb
@@ -20,6 +20,78 @@ class Environment < ActiveRecord::Base @@ -20,6 +20,78 @@ class Environment < ActiveRecord::Base
20 end 20 end
21 end 21 end
22 22
  23 + after_create do |e|
  24 + Role.create!(
  25 + :key => 'environment_administrator',
  26 + :name => N_('Environment Administrator'),
  27 + :environment => e,
  28 + :permissions => [
  29 + 'view_environment_admin_panel',
  30 + 'edit_environment_features',
  31 + 'edit_environment_design',
  32 + 'manage_environment_categories',
  33 + 'manage_environment_roles',
  34 + 'manage_environment_validators',
  35 + 'edit_profile',
  36 + 'destroy_profile',
  37 + 'manage_memberships',
  38 + 'post_content',
  39 + 'edit_profile_design',
  40 + 'manage_products',
  41 + 'edit_appearance',
  42 + 'manage_friends',
  43 + 'validate_enterprise',
  44 + 'perform_task',
  45 + ]
  46 + )
  47 + Role.create!(
  48 + :key => 'profile_admin',
  49 + :name => N_('Profile Administrator'),
  50 + :environment => e,
  51 + :permissions => [
  52 + 'edit_profile',
  53 + 'destroy_profile',
  54 + 'manage_memberships',
  55 + 'post_content',
  56 + 'edit_profile_design',
  57 + 'manage_products',
  58 + 'edit_appearance',
  59 + ]
  60 + )
  61 + # members for enterprises, communities etc
  62 + Role.create!(
  63 + :key => "profile_member",
  64 + :name => N_('Member'),
  65 + :environment => e,
  66 + :permissions => [
  67 + 'edit_profile',
  68 + 'post_content',
  69 + 'manage_products'
  70 + ]
  71 + )
  72 + # moderators for enterprises, communities etc
  73 + Role.create!(
  74 + :key => 'profile_moderator',
  75 + :name => N_('Moderator'),
  76 + :environment => e,
  77 + :permissions => [
  78 + 'manage_memberships',
  79 + 'edit_profile_design',
  80 + 'manage_products',
  81 + 'manage_friends',
  82 + 'perform_task'
  83 + ]
  84 + )
  85 + end
  86 +
  87 + def add_admin(user)
  88 + self.affiliate(user, Environment::Roles.admin(self.id))
  89 + end
  90 +
  91 + def admins
  92 + self.members_by_role(Environment::Roles.admin(self.id))
  93 + end
  94 +
23 # returns the available features for a Environment, in the form of a 95 # returns the available features for a Environment, in the form of a
24 # hash, with pairs in the form <tt>'feature_name' => 'Feature name'</tt>. 96 # hash, with pairs in the form <tt>'feature_name' => 'Feature name'</tt>.
25 def self.available_features 97 def self.available_features
lib/tasks/populate.rake
@@ -7,61 +7,7 @@ namespace :db do @@ -7,61 +7,7 @@ namespace :db do
7 desc "Populate database with basic required data to run application" 7 desc "Populate database with basic required data to run application"
8 task :populate do 8 task :populate do
9 Environment.create!(:name => 'Noosfero', :is_default => true) unless (Environment.default) 9 Environment.create!(:name => 'Noosfero', :is_default => true) unless (Environment.default)
10 - create_roles  
11 - new_permissions  
12 end 10 end
13 end 11 end
14 12
15 -def new_permissions  
16 - e = Environment.default  
17 - admin = Profile::Roles.admin(e.id)  
18 - admin.permissions += ['manage_friends', 'validate_enterprise', 'perform_task']  
19 - admin.save  
20 -  
21 - moderator = Profile::Roles.moderator(e.id)  
22 - moderator.permissions += ['manage_friends', 'perform_task']  
23 - moderator.save  
24 -end  
25 -  
26 -def create_roles  
27 - e = Environment.default  
28 - # Environment administrator!  
29 - Role.create!(:key => 'environment_administrator', :name => N_('Environment Administrator'), :environment => e, :permissions => [  
30 - 'view_environment_admin_panel',  
31 - 'edit_environment_features',  
32 - 'edit_environment_design',  
33 - 'manage_environment_categories',  
34 - 'manage_environment_roles',  
35 - 'manage_environment_validators',  
36 - 'edit_profile',  
37 - 'destroy_profile',  
38 - 'manage_memberships',  
39 - 'post_content',  
40 - 'edit_profile_design',  
41 - 'manage_products',  
42 - 'edit_appearance',  
43 - ])  
44 - Role.create!(:key => 'profile_admin', :name => N_('Profile Administrator'), :environment => e, :permissions => [  
45 - 'edit_profile',  
46 - 'destroy_profile',  
47 - 'manage_memberships',  
48 - 'post_content',  
49 - 'edit_profile_design',  
50 - 'manage_products',  
51 - 'edit_appearance',  
52 - ])  
53 - # members for enterprises, communities etc  
54 - Role.create!(:key => "profile_member", :name => N_('Member'), :environment => e, :permissions => [  
55 - 'edit_profile',  
56 - 'post_content',  
57 - 'manage_products'  
58 - ])  
59 - # moderators for enterprises, communities etc  
60 - Role.create!(:key => 'profile_moderator', :name => N_('Moderator'), :environment => e, :permissions => [  
61 - 'manage_memberships',  
62 - 'edit_profile_design',  
63 - 'manage_products'  
64 - ])  
65 -end  
66 -  
67 # vim: ft=ruby 13 # vim: ft=ruby
test/unit/environment_test.rb
@@ -326,6 +326,15 @@ class EnvironmentTest &lt; Test::Unit::TestCase @@ -326,6 +326,15 @@ class EnvironmentTest &lt; Test::Unit::TestCase
326 assert_kind_of Role, Environment::Roles.admin(Environment.default.id) 326 assert_kind_of Role, Environment::Roles.admin(Environment.default.id)
327 end 327 end
328 328
  329 + should 'be able to add admins easily' do
  330 + env = Environment.create!(:name => 'test')
  331 + user = create_user('testuser').person
  332 + env.add_admin(user)
  333 + env.reload
  334 +
  335 + assert_includes env.admins, user
  336 + end
  337 +
329 should 'have products through enterprises' do 338 should 'have products through enterprises' do
330 env = Environment.default 339 env = Environment.default
331 e1 = Enterprise.create!(:name => 'test_ent1', :identifier => 'test_ent1') 340 e1 = Enterprise.create!(:name => 'test_ent1', :identifier => 'test_ent1')