Commit 52591d04efebac62ef1b9b10b8a025b773bf41a8
1 parent
8c2a1563
Exists in
master
and in
29 other branches
ActionItem893: retrieving urls from profile to get right hostname
Showing
15 changed files
with
86 additions
and
34 deletions
Show diff stats
app/controllers/public/account_controller.rb
... | ... | @@ -261,7 +261,11 @@ class AccountController < ApplicationController |
261 | 261 | end |
262 | 262 | |
263 | 263 | def go_to_user_initial_page |
264 | - redirect_back_or_default(:controller => "profile_editor", :profile => current_user.login, :action => 'index') | |
264 | + if environment == current_user.environment | |
265 | + redirect_back_or_default(user.admin_url) | |
266 | + else | |
267 | + redirect_back_or_default(:controller => 'home') | |
268 | + end | |
265 | 269 | end |
266 | 270 | |
267 | 271 | end | ... | ... |
app/helpers/application_helper.rb
... | ... | @@ -121,13 +121,22 @@ module ApplicationHelper |
121 | 121 | end |
122 | 122 | |
123 | 123 | def link_to_homepage(text, profile = nil, options = {}) |
124 | - profile ||= current_user.login | |
125 | - link_to text, homepage_path(:profile => profile) , options | |
124 | + p = if profile | |
125 | + Profile[profile] | |
126 | + else | |
127 | + user | |
128 | + end | |
129 | + | |
130 | + link_to text, p.url, options | |
126 | 131 | end |
127 | 132 | |
128 | 133 | def link_to_myprofile(text, url = {}, profile = nil, options = {}) |
129 | - profile ||= current_user.login | |
130 | - link_to text, { :profile => profile, :controller => 'profile_editor' }.merge(url), options | |
134 | + p = if profile | |
135 | + Profile[profile] | |
136 | + else | |
137 | + user | |
138 | + end | |
139 | + link_to text, p.admin_url.merge(url), options | |
131 | 140 | end |
132 | 141 | |
133 | 142 | def link_to_document(doc, text = nil) | ... | ... |
app/models/person.rb
... | ... | @@ -154,8 +154,8 @@ class Person < Profile |
154 | 154 | person.user.save! |
155 | 155 | end |
156 | 156 | |
157 | - def is_admin? | |
158 | - role_assignments.map{|ra|ra.role.permissions}.any? do |ps| | |
157 | + def is_admin?(environment) | |
158 | + role_assignments.select { |ra| ra.resource == environment }.map{|ra|ra.role.permissions}.any? do |ps| | |
159 | 159 | ps.any? do |p| |
160 | 160 | ActiveRecord::Base::PERMISSIONS['Environment'].keys.include?(p) |
161 | 161 | end | ... | ... |
app/views/blocks/profile_info_actions/person.rhtml
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 | <%if logged_in? && (user != profile) %> |
3 | 3 | |
4 | 4 | <% if !user.already_request_friendship?(profile) and !user.is_a_friend?(profile) %> |
5 | - <li><%= link_to content_tag('span', __('Add friend')), { :profile => user.identifier, :controller => 'friends', :action => 'add', :id => profile.id }, :class => 'button with-text icon-add' %></li> | |
5 | + <li><%= link_to content_tag('span', __('Add friend')), user.url.merge(:controller => 'friends', :action => 'add', :id => profile.id), :class => 'button with-text icon-add' %></li> | |
6 | 6 | <% end %> |
7 | 7 | |
8 | 8 | <% if user.is_a_friend?(profile) && profile.enable_contact? %> | ... | ... |
app/views/home/index.rhtml
app/views/profile_editor/index.rhtml
... | ... | @@ -21,7 +21,7 @@ |
21 | 21 | |
22 | 22 | <%= file_manager_button(_('Edit Appearance'), 'icons-app/design-editor.png', :controller => 'themes', :action => 'index') %> |
23 | 23 | |
24 | - <%= file_manager_button(_('Edit Header and Footer'), 'icons-app/header-and-footer.png', :controller => 'profile_editor', :action => 'header_footer') unless profile.enterprise? && environment.enabled?('disable_header_and_footer') && !user.is_admin? %> | |
24 | + <%= file_manager_button(_('Edit Header and Footer'), 'icons-app/header-and-footer.png', :controller => 'profile_editor', :action => 'header_footer') unless profile.enterprise? && environment.enabled?('disable_header_and_footer') && !user.is_admin?(environment) %> | |
25 | 25 | |
26 | 26 | <%= file_manager_button(_('Manage Content'), 'icons-app/cms.png', :controller => 'cms') unless environment.enabled?('disable_cms') || profile.community? %> |
27 | 27 | ... | ... |
app/views/search/communities.rhtml
... | ... | @@ -14,7 +14,8 @@ |
14 | 14 | |
15 | 15 | <% if logged_in? %> |
16 | 16 | <% button_bar do %> |
17 | - <%= button(:add, _('New community'), :controller => 'memberships', :action => 'new_community', :profile => current_user.person.identifier) %> | |
17 | + <%# FIXME shouldn't the user create the community in the current environment instead of going to its home environment? %> | |
18 | + <%= button(:add, _('New community'), user.url.merge(:controller => 'memberships', :action => 'new_community')) %> | |
18 | 19 | <% end %> |
19 | 20 | <% end %> |
20 | 21 | ... | ... |
app/views/shared/user_menu.rhtml
... | ... | @@ -15,9 +15,9 @@ |
15 | 15 | <div id="user_menu_ul"> |
16 | 16 | <ul> |
17 | 17 | |
18 | - <li><a href="<%= homepage_path(:profile => current_user.login) %>" | |
19 | - help="<%= _('Go to your home page.') %>" | |
20 | - ><span class="icon-menu-home"></span><%= __('My Home Page') %></a></li> | |
18 | + <li> | |
19 | + <%= link_to( '<span class="icon-menu-home"></span>' + __('My Home Page'), user.url, :help => _('Go to your home page.'))%> | |
20 | + </li> | |
21 | 21 | |
22 | 22 | <!-- li><a href="#"><span class="icon-menu-blog"></span> Meu Blog</a></li --> |
23 | 23 | |
... | ... | @@ -32,16 +32,16 @@ |
32 | 32 | :help => _('Control panel: change your picture, edit your personal information, create content or change the way your home page looks.') |
33 | 33 | ) %></li> |
34 | 34 | |
35 | - <%= | |
36 | - '<li>'+ link_to( '<span class="icon-menu-"></span>'+ _('Admin'), | |
37 | - { :controller => 'admin_panel' }, :id => 'link_admin_panel', | |
38 | - :help => _('Access the site administration panel.') | |
39 | - ) + | |
40 | - '</li>' if user.is_admin? | |
41 | - %> | |
35 | + <% if user.is_admin?(environment) %> | |
36 | + <li><%= link_to( '<span class="icon-menu-"></span>'+ _('Admin'), | |
37 | + {:controller => 'admin_panel' }, | |
38 | + :id => 'link_admin_panel', | |
39 | + :help => _('Access the site administration panel.') | |
40 | + )%></li> | |
41 | + <% end %> | |
42 | 42 | |
43 | 43 | <li><%= link_to( '<span class="icon-menu-logout"></span>'+ _('Logout'), |
44 | - { :controller => 'account', :action => 'logout'}, | |
44 | + {:controller => 'account', :action => 'logout'}, | |
45 | 45 | :id => 'link_logout', |
46 | 46 | :help => _('This link takes you out of the system. You should logout if other people are willing to use the same computer after you.') |
47 | 47 | ) %></li> | ... | ... |
test/functional/account_controller_test.rb
... | ... | @@ -40,6 +40,16 @@ class AccountControllerTest < Test::Unit::TestCase |
40 | 40 | assert_redirected_to :controller => 'profile_editor', :action => 'index', :profile => 'quire' |
41 | 41 | end |
42 | 42 | |
43 | + should 'redirect to home when login on other environment' do | |
44 | + e = Environment.create!(:name => 'other_environment') | |
45 | + e.domains << Domain.new(:name => 'other.environment') | |
46 | + e.save! | |
47 | + u = create_user('test_user', :environment => e).person | |
48 | + post :login, :user => {:login => 'test_user', :password => 'test_user'} | |
49 | + | |
50 | + assert_redirected_to :controller => 'home' | |
51 | + end | |
52 | + | |
43 | 53 | def test_should_fail_login_and_not_redirect |
44 | 54 | @request.env["HTTP_REFERER"] = 'bli' |
45 | 55 | post :login, :user => {:login => 'johndoe', :password => 'bad password'} |
... | ... | @@ -275,7 +285,8 @@ class AccountControllerTest < Test::Unit::TestCase |
275 | 285 | end |
276 | 286 | |
277 | 287 | should 'correct redirect after login' do |
278 | - post :login, :user => {:login => 'johndoe', :password => 'test'} | |
288 | + user = create_user('correct_redirect').person | |
289 | + post :login, :user => {:login => 'correct_redirect', :password => 'correct_redirect'} | |
279 | 290 | assert_redirected_to :controller => 'profile_editor' |
280 | 291 | end |
281 | 292 | ... | ... |
test/functional/admin_panel_controller_test.rb
... | ... | @@ -24,11 +24,6 @@ class AdminPanelControllerTest < Test::Unit::TestCase |
24 | 24 | end |
25 | 25 | |
26 | 26 | should 'manage the correct environment' do |
27 | - Environment.destroy_all | |
28 | - | |
29 | - default = Environment.create!(:name => 'default env', :is_default => true) | |
30 | - Environment.stubs(:default).returns(default) | |
31 | - | |
32 | 27 | current = Environment.create!(:name => 'test environment', :is_default => false) |
33 | 28 | current.domains.create!(:name => 'example.com') |
34 | 29 | ... | ... |
test/functional/application_controller_test.rb
... | ... | @@ -408,4 +408,20 @@ class ApplicationControllerTest < Test::Unit::TestCase |
408 | 408 | get :index, :profile => p.identifier |
409 | 409 | assert_tag 'title', :content => p.name + ' - ' + p.environment.name |
410 | 410 | end |
411 | + | |
412 | + should 'display menu links for my environment when logged in other environment' do | |
413 | + e = Environment.create!(:name => 'other_environment') | |
414 | + e.domains << Domain.new(:name => 'other.environment') | |
415 | + e.save! | |
416 | + | |
417 | + login_as(create_admin_user(e)) | |
418 | + uses_host 'other.environment' | |
419 | + get :index | |
420 | + assert_tag :tag => 'div', :attributes => {:id => 'user_menu_ul'} | |
421 | + assert_tag :tag => 'div', :attributes => {:id => 'user_menu_ul'}, | |
422 | + :descendant => {:tag => 'a', :attributes => { :href => 'http://other.environment/adminuser' }}, | |
423 | + :descendant => {:tag => 'a', :attributes => { :href => 'http://other.environment/myprofile/adminuser' }}, | |
424 | + :descendant => {:tag => 'a', :attributes => { :href => '/admin' }} | |
425 | + end | |
426 | + | |
411 | 427 | end | ... | ... |
test/functional/profile_controller_test.rb
... | ... | @@ -172,7 +172,7 @@ class ProfileControllerTest < Test::Unit::TestCase |
172 | 172 | community = Community.create!(:name => 'my test community') |
173 | 173 | community.add_admin(@profile) |
174 | 174 | get :index, :profile => community.identifier |
175 | - assert_tag :tag => 'a', :attributes => { :href => "/myprofile/#{@profile.identifier}" }, :content => 'Control panel' | |
175 | + assert_tag :tag => 'a', :attributes => { :href => /\/myprofile\/#{@profile.identifier}/ }, :content => 'Control panel' | |
176 | 176 | end |
177 | 177 | |
178 | 178 | should 'show create community in own profile' do | ... | ... |
test/integration/login_to_the_application_test.rb
... | ... | @@ -12,7 +12,8 @@ class LoginToTheApplicationTest < ActionController::IntegrationTest |
12 | 12 | get '/account/login_popup' |
13 | 13 | assert_response :success |
14 | 14 | |
15 | - login('ze', 'test') | |
15 | + create_user('test_user').person | |
16 | + login('test_user', 'test_user') | |
16 | 17 | assert_cannot_login |
17 | 18 | assert_can_logout |
18 | 19 | ... | ... |
test/test_helper.rb
... | ... | @@ -66,7 +66,7 @@ class Test::Unit::TestCase |
66 | 66 | end |
67 | 67 | |
68 | 68 | def create_admin_user(env) |
69 | - admin_user = User.find_by_login('adminuser') || create_user('adminuser', :email => 'adminuser@noosfero.org', :password => 'adminuser', :password_confirmation => 'adminuser') | |
69 | + admin_user = User.find_by_login('adminuser') || create_user('adminuser', :email => 'adminuser@noosfero.org', :password => 'adminuser', :password_confirmation => 'adminuser', :environment => env) | |
70 | 70 | admin_role = Role.find_by_name('admin_role') || Role.create!(:name => 'admin_role', :permissions => ['view_environment_admin_panel','edit_environment_features', 'edit_environment_design', 'manage_environment_categories', 'manage_environment_roles', 'manage_environment_validators']) |
71 | 71 | RoleAssignment.create!(:accessor => admin_user.person, :role => admin_role, :resource => env) unless admin_user.person.role_assignments.map{|ra|[ra.role, ra.accessor, ra.resource]}.include?([admin_role, admin_user, env]) |
72 | 72 | admin_user.login | ... | ... |
test/unit/person_test.rb
... | ... | @@ -134,10 +134,27 @@ class PersonTest < Test::Unit::TestCase |
134 | 134 | env = Environment.create!(:name => 'blah') |
135 | 135 | person = create_user('just_another_person').person |
136 | 136 | env.affiliate(person, role) |
137 | - assert ! person.is_admin? | |
137 | + assert ! person.is_admin?(env) | |
138 | 138 | role.update_attributes(:permissions => ['view_environment_admin_panel']) |
139 | 139 | person = Person.find(person.id) |
140 | - assert person.is_admin? | |
140 | + assert person.is_admin?(env) | |
141 | + end | |
142 | + | |
143 | + should 'separate admins of different environments' do | |
144 | + env1 = Environment.create!(:name => 'blah1') | |
145 | + env2 = Environment.create!(:name => 'blah2') | |
146 | + | |
147 | + # role is an admin role | |
148 | + role = Role.create!(:name => 'just_another_admin_role') | |
149 | + role.update_attributes(:permissions => ['view_environment_admin_panel']) | |
150 | + | |
151 | + # user is admin of env1, but not of env2 | |
152 | + person = create_user('just_another_person').person | |
153 | + env1.affiliate(person, role) | |
154 | + | |
155 | + person = Person.find(person.id) | |
156 | + assert person.is_admin?(env1) | |
157 | + assert !person.is_admin?(env2) | |
141 | 158 | end |
142 | 159 | |
143 | 160 | should 'get a default home page and a RSS feed' do | ... | ... |