Commit 88f4efc56a0642c0564693810cebc3061c206db4
1 parent
fd488954
Exists in
master
and in
23 other branches
admin_features: Add support for selecting where to redirect users after
signup. (ActionItem2998) Signed-off-by: Daniel Bucher <daniel.bucher88@gmail.com> Signed-off-by: Luiz Matos <luizff.matos@gmail.com>
Showing
3 changed files
with
121 additions
and
2 deletions
Show diff stats
app/controllers/public/account_controller.rb
| @@ -69,6 +69,8 @@ class AccountController < ApplicationController | @@ -69,6 +69,8 @@ class AccountController < ApplicationController | ||
| 69 | session[:notice] = _("This environment doesn't allow user registration.") | 69 | session[:notice] = _("This environment doesn't allow user registration.") |
| 70 | end | 70 | end |
| 71 | 71 | ||
| 72 | + store_location(request.referer) unless params[:return_to] or session[:return_to] | ||
| 73 | + | ||
| 72 | @block_bot = !!session[:may_be_a_bot] | 74 | @block_bot = !!session[:may_be_a_bot] |
| 73 | @invitation_code = params[:invitation_code] | 75 | @invitation_code = params[:invitation_code] |
| 74 | begin | 76 | begin |
| @@ -98,7 +100,7 @@ class AccountController < ApplicationController | @@ -98,7 +100,7 @@ class AccountController < ApplicationController | ||
| 98 | end | 100 | end |
| 99 | if @user.activated? | 101 | if @user.activated? |
| 100 | self.current_user = @user | 102 | self.current_user = @user |
| 101 | - redirect_to '/' | 103 | + go_to_signup_initial_page |
| 102 | else | 104 | else |
| 103 | @register_pending = true | 105 | @register_pending = true |
| 104 | end | 106 | end |
| @@ -369,6 +371,7 @@ class AccountController < ApplicationController | @@ -369,6 +371,7 @@ class AccountController < ApplicationController | ||
| 369 | 371 | ||
| 370 | def go_to_initial_page | 372 | def go_to_initial_page |
| 371 | if params[:return_to] | 373 | if params[:return_to] |
| 374 | + #I never get here | ||
| 372 | redirect_to params[:return_to] | 375 | redirect_to params[:return_to] |
| 373 | elsif environment.enabled?('allow_change_of_redirection_after_login') | 376 | elsif environment.enabled?('allow_change_of_redirection_after_login') |
| 374 | case user.preferred_login_redirection | 377 | case user.preferred_login_redirection |
| @@ -394,6 +397,23 @@ class AccountController < ApplicationController | @@ -394,6 +397,23 @@ class AccountController < ApplicationController | ||
| 394 | end | 397 | end |
| 395 | end | 398 | end |
| 396 | 399 | ||
| 400 | + def go_to_signup_initial_page | ||
| 401 | + case @user.environment.redirection_after_signup | ||
| 402 | + when 'keep_on_same_page' | ||
| 403 | + redirect_back_or_default(user.admin_url) | ||
| 404 | + when 'site_homepage' | ||
| 405 | + redirect_to :controller => :home | ||
| 406 | + when 'user_profile_page' | ||
| 407 | + redirect_to user.public_profile_url | ||
| 408 | + when 'user_homepage' | ||
| 409 | + redirect_to user.url | ||
| 410 | + when 'user_control_panel' | ||
| 411 | + redirect_to user.admin_url | ||
| 412 | + else | ||
| 413 | + redirect_to user.url | ||
| 414 | + end | ||
| 415 | + end | ||
| 416 | + | ||
| 397 | def redirect_if_logged_in | 417 | def redirect_if_logged_in |
| 398 | if logged_in? | 418 | if logged_in? |
| 399 | go_to_initial_page | 419 | go_to_initial_page |
features/signup.feature
| @@ -3,7 +3,7 @@ Feature: signup | @@ -3,7 +3,7 @@ Feature: signup | ||
| 3 | I want to sign up to the site | 3 | I want to sign up to the site |
| 4 | So I can have fun using its features | 4 | So I can have fun using its features |
| 5 | 5 | ||
| 6 | -@selenium | 6 | + @selenium |
| 7 | Scenario: successfull registration | 7 | Scenario: successfull registration |
| 8 | Given I am on the homepage | 8 | Given I am on the homepage |
| 9 | When I follow "Login" | 9 | When I follow "Login" |
| @@ -60,3 +60,84 @@ Feature: signup | @@ -60,3 +60,84 @@ Feature: signup | ||
| 60 | And I fill in "Name" with "" | 60 | And I fill in "Name" with "" |
| 61 | When I press "Save" | 61 | When I press "Save" |
| 62 | Then I should see "Name can't be blank" | 62 | Then I should see "Name can't be blank" |
| 63 | + | ||
| 64 | + @selenium | ||
| 65 | + Scenario: user should stay on same page after signup | ||
| 66 | + Given the environment is configured to stay on the same page after signup | ||
| 67 | + And feature "skip_new_user_email_confirmation" is enabled on environment | ||
| 68 | + And I am on /search/people | ||
| 69 | + When I follow "Sign up" | ||
| 70 | + And I fill in the following within ".no-boxes": | ||
| 71 | + | e-Mail | josesilva@example.com | | ||
| 72 | + | Username | josesilva | | ||
| 73 | + | Password | secret | | ||
| 74 | + | Password confirmation | secret | | ||
| 75 | + | Full name | José da Silva | | ||
| 76 | + And wait for the captcha signup time | ||
| 77 | + And I press "Create my account" | ||
| 78 | + Then I should be on /search/people | ||
| 79 | + | ||
| 80 | + @selenium | ||
| 81 | + Scenario: user should go to his homepage after signup | ||
| 82 | + Given the environment is configured to redirect to profile homepage after signup | ||
| 83 | + And feature "skip_new_user_email_confirmation" is enabled on environment | ||
| 84 | + And I am on /search/people | ||
| 85 | + When I follow "Sign up" | ||
| 86 | + And I fill in the following within ".no-boxes": | ||
| 87 | + | e-Mail | josesilva@example.com | | ||
| 88 | + | Username | josesilva | | ||
| 89 | + | Password | secret | | ||
| 90 | + | Password confirmation | secret | | ||
| 91 | + | Full name | José da Silva | | ||
| 92 | + And wait for the captcha signup time | ||
| 93 | + And I press "Create my account" | ||
| 94 | + Then I should be on josesilva's profile | ||
| 95 | + | ||
| 96 | + @selenium | ||
| 97 | + Scenario: user should go to his control panel after signup | ||
| 98 | + Given the environment is configured to redirect to profile control panel after signup | ||
| 99 | + And feature "skip_new_user_email_confirmation" is enabled on environment | ||
| 100 | + And I am on /search/people | ||
| 101 | + When I follow "Sign up" | ||
| 102 | + And I fill in the following within ".no-boxes": | ||
| 103 | + | e-Mail | josesilva@example.com | | ||
| 104 | + | Username | josesilva | | ||
| 105 | + | Password | secret | | ||
| 106 | + | Password confirmation | secret | | ||
| 107 | + | Full name | José da Silva | | ||
| 108 | + And wait for the captcha signup time | ||
| 109 | + And I press "Create my account" | ||
| 110 | + Then I should be on josesilva's control panel | ||
| 111 | + | ||
| 112 | + @selenium | ||
| 113 | + Scenario: user should go to his profile page after signup | ||
| 114 | + Given the environment is configured to redirect to profile page after signup | ||
| 115 | + And feature "skip_new_user_email_confirmation" is enabled on environment | ||
| 116 | + And I am on /search/people | ||
| 117 | + When I follow "Sign up" | ||
| 118 | + And I fill in the following within ".no-boxes": | ||
| 119 | + | e-Mail | josesilva@example.com | | ||
| 120 | + | Username | josesilva | | ||
| 121 | + | Password | secret | | ||
| 122 | + | Password confirmation | secret | | ||
| 123 | + | Full name | José da Silva | | ||
| 124 | + And wait for the captcha signup time | ||
| 125 | + And I press "Create my account" | ||
| 126 | + Then I should be on josesilva's profile | ||
| 127 | + | ||
| 128 | + @selenium | ||
| 129 | + Scenario: user should go to the environment's homepage after signup | ||
| 130 | + Given the environment is configured to redirect to site homepage after signup | ||
| 131 | + And feature "skip_new_user_email_confirmation" is enabled on environment | ||
| 132 | + And I am on /search/people | ||
| 133 | + When I follow "Sign up" | ||
| 134 | + And I fill in the following within ".no-boxes": | ||
| 135 | + | e-Mail | josesilva@example.com | | ||
| 136 | + | Username | josesilva | | ||
| 137 | + | Password | secret | | ||
| 138 | + | Password confirmation | secret | | ||
| 139 | + | Full name | José da Silva | | ||
| 140 | + And wait for the captcha signup time | ||
| 141 | + And I press "Create my account" | ||
| 142 | + Then I should be on the homepage | ||
| 143 | + |
features/step_definitions/noosfero_steps.rb
| @@ -738,6 +738,24 @@ Given /^the profile (.*) is configured to (.*) after login$/ do |profile, option | @@ -738,6 +738,24 @@ Given /^the profile (.*) is configured to (.*) after login$/ do |profile, option | ||
| 738 | profile.save | 738 | profile.save |
| 739 | end | 739 | end |
| 740 | 740 | ||
| 741 | +Given /^the environment is configured to (.*) after signup$/ do |option| | ||
| 742 | + redirection = case option | ||
| 743 | + when 'stay on the same page' | ||
| 744 | + 'keep_on_same_page' | ||
| 745 | + when 'redirect to site homepage' | ||
| 746 | + 'site_homepage' | ||
| 747 | + when 'redirect to user profile page' | ||
| 748 | + 'user_profile_page' | ||
| 749 | + when 'redirect to profile homepage' | ||
| 750 | + 'user_homepage' | ||
| 751 | + when 'redirect to profile control panel' | ||
| 752 | + 'user_control_panel' | ||
| 753 | + end | ||
| 754 | + environment = Environment.default | ||
| 755 | + environment.redirection_after_signup = redirection | ||
| 756 | + environment.save | ||
| 757 | +end | ||
| 758 | + | ||
| 741 | When /^wait for the captcha signup time$/ do | 759 | When /^wait for the captcha signup time$/ do |
| 742 | environment = Environment.default | 760 | environment = Environment.default |
| 743 | sleep environment.min_signup_delay + 1 | 761 | sleep environment.min_signup_delay + 1 |