Commit 964df6262204b7e2c97ed93be0c3d00774baa463
Exists in
master
and in
29 other branches
Merge branch 'signup_redirect_improvements' into 'master'
Signup Redirect Improvements Add environment feature for choosing where to redirect the user after signup. The options are the same as the ones for the login redirection options existing today. This feature takes in consideration that the usar may have to follow a confirmation URL recieved by eletronic mail.
Showing
12 changed files
with
312 additions
and
12 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 |
@@ -77,6 +79,7 @@ class AccountController < ApplicationController | @@ -77,6 +79,7 @@ class AccountController < ApplicationController | ||
77 | @user.environment = environment | 79 | @user.environment = environment |
78 | @terms_of_use = environment.terms_of_use | 80 | @terms_of_use = environment.terms_of_use |
79 | @user.person_data = params[:profile_data] | 81 | @user.person_data = params[:profile_data] |
82 | + @user.return_to = session[:return_to] | ||
80 | @person = Person.new(params[:profile_data]) | 83 | @person = Person.new(params[:profile_data]) |
81 | @person.environment = @user.environment | 84 | @person.environment = @user.environment |
82 | if request.post? | 85 | if request.post? |
@@ -98,7 +101,7 @@ class AccountController < ApplicationController | @@ -98,7 +101,7 @@ class AccountController < ApplicationController | ||
98 | end | 101 | end |
99 | if @user.activated? | 102 | if @user.activated? |
100 | self.current_user = @user | 103 | self.current_user = @user |
101 | - redirect_to '/' | 104 | + go_to_signup_initial_page |
102 | else | 105 | else |
103 | @register_pending = true | 106 | @register_pending = true |
104 | end | 107 | end |
@@ -368,7 +371,14 @@ class AccountController < ApplicationController | @@ -368,7 +371,14 @@ class AccountController < ApplicationController | ||
368 | end | 371 | end |
369 | 372 | ||
370 | def go_to_initial_page | 373 | def go_to_initial_page |
374 | + if params[:redirection] | ||
375 | + session[:return_to] = @user.return_to | ||
376 | + @user.return_to = nil | ||
377 | + @user.save | ||
378 | + end | ||
379 | + | ||
371 | if params[:return_to] | 380 | if params[:return_to] |
381 | + #I never get here | ||
372 | redirect_to params[:return_to] | 382 | redirect_to params[:return_to] |
373 | elsif environment.enabled?('allow_change_of_redirection_after_login') | 383 | elsif environment.enabled?('allow_change_of_redirection_after_login') |
374 | case user.preferred_login_redirection | 384 | case user.preferred_login_redirection |
@@ -387,13 +397,43 @@ class AccountController < ApplicationController | @@ -387,13 +397,43 @@ class AccountController < ApplicationController | ||
387 | end | 397 | end |
388 | else | 398 | else |
389 | if environment == current_user.environment | 399 | if environment == current_user.environment |
390 | - redirect_back_or_default(user.admin_url) | 400 | + case environment.redirection_after_login |
401 | + when 'keep_on_same_page' | ||
402 | + redirect_back_or_default(user.admin_url) | ||
403 | + when 'site_homepage' | ||
404 | + redirect_to :controller => :home | ||
405 | + when 'user_profile_page' | ||
406 | + redirect_to user.public_profile_url | ||
407 | + when 'user_homepage' | ||
408 | + redirect_to user.url | ||
409 | + when 'user_control_panel' | ||
410 | + redirect_to user.admin_url | ||
411 | + else | ||
412 | + redirect_back_or_default(user.admin_url) | ||
413 | + end | ||
391 | else | 414 | else |
392 | redirect_back_or_default(:controller => 'home') | 415 | redirect_back_or_default(:controller => 'home') |
393 | end | 416 | end |
394 | end | 417 | end |
395 | end | 418 | end |
396 | 419 | ||
420 | + def go_to_signup_initial_page | ||
421 | + case @user.environment.redirection_after_signup | ||
422 | + when 'keep_on_same_page' | ||
423 | + redirect_back_or_default(user.admin_url) | ||
424 | + when 'site_homepage' | ||
425 | + redirect_to :controller => :home | ||
426 | + when 'user_profile_page' | ||
427 | + redirect_to user.public_profile_url | ||
428 | + when 'user_homepage' | ||
429 | + redirect_to user.url | ||
430 | + when 'user_control_panel' | ||
431 | + redirect_to user.admin_url | ||
432 | + else | ||
433 | + redirect_to user.url | ||
434 | + end | ||
435 | + end | ||
436 | + | ||
397 | def redirect_if_logged_in | 437 | def redirect_if_logged_in |
398 | if logged_in? | 438 | if logged_in? |
399 | go_to_initial_page | 439 | go_to_initial_page |
app/models/environment.rb
@@ -145,6 +145,18 @@ class Environment < ActiveRecord::Base | @@ -145,6 +145,18 @@ class Environment < ActiveRecord::Base | ||
145 | end | 145 | end |
146 | validates_inclusion_of :redirection_after_login, :in => Environment.login_redirection_options.keys, :allow_nil => true | 146 | validates_inclusion_of :redirection_after_login, :in => Environment.login_redirection_options.keys, :allow_nil => true |
147 | 147 | ||
148 | + def self.signup_redirection_options | ||
149 | + { | ||
150 | + 'keep_on_same_page' => _('Stays on the same page the user was before signup.'), | ||
151 | + 'site_homepage' => _('Redirects the user to the environment homepage.'), | ||
152 | + 'user_profile_page' => _('Redirects the user to his profile page.'), | ||
153 | + 'user_homepage' => _('Redirects the user to his homepage.'), | ||
154 | + 'user_control_panel' => _('Redirects the user to his control panel.') | ||
155 | + } | ||
156 | + end | ||
157 | + validates_inclusion_of :redirection_after_signup, :in => Environment.signup_redirection_options.keys, :allow_nil => true | ||
158 | + | ||
159 | + | ||
148 | # ################################################# | 160 | # ################################################# |
149 | # Relationships and applied behaviour | 161 | # Relationships and applied behaviour |
150 | # ################################################# | 162 | # ################################################# |
app/models/user.rb
@@ -71,7 +71,8 @@ class User < ActiveRecord::Base | @@ -71,7 +71,8 @@ class User < ActiveRecord::Base | ||
71 | body :recipient => user.name, | 71 | body :recipient => user.name, |
72 | :activation_code => user.activation_code, | 72 | :activation_code => user.activation_code, |
73 | :environment => user.environment.name, | 73 | :environment => user.environment.name, |
74 | - :url => user.environment.top_url | 74 | + :url => user.environment.top_url, |
75 | + :return_to => user.return_to | ||
75 | end | 76 | end |
76 | 77 | ||
77 | def signup_welcome_email(user) | 78 | def signup_welcome_email(user) |
@@ -93,7 +94,7 @@ class User < ActiveRecord::Base | @@ -93,7 +94,7 @@ class User < ActiveRecord::Base | ||
93 | self.person.save! | 94 | self.person.save! |
94 | end | 95 | end |
95 | end | 96 | end |
96 | - | 97 | + |
97 | has_one :person, :dependent => :destroy | 98 | has_one :person, :dependent => :destroy |
98 | belongs_to :environment | 99 | belongs_to :environment |
99 | 100 | ||
@@ -183,7 +184,7 @@ class User < ActiveRecord::Base | @@ -183,7 +184,7 @@ class User < ActiveRecord::Base | ||
183 | encryption_methods[sym] = block | 184 | encryption_methods[sym] = block |
184 | end | 185 | end |
185 | 186 | ||
186 | - # the encryption method used for this instance | 187 | + # the encryption method used for this instance |
187 | def encryption_method | 188 | def encryption_method |
188 | (password_type || User.system_encryption_method).to_sym | 189 | (password_type || User.system_encryption_method).to_sym |
189 | end | 190 | end |
@@ -226,7 +227,7 @@ class User < ActiveRecord::Base | @@ -226,7 +227,7 @@ class User < ActiveRecord::Base | ||
226 | end | 227 | end |
227 | 228 | ||
228 | def remember_token? | 229 | def remember_token? |
229 | - remember_token_expires_at && Time.now.utc < remember_token_expires_at | 230 | + remember_token_expires_at && Time.now.utc < remember_token_expires_at |
230 | end | 231 | end |
231 | 232 | ||
232 | # These create and unset the fields required for remembering users between browser closes | 233 | # These create and unset the fields required for remembering users between browser closes |
@@ -255,7 +256,7 @@ class User < ActiveRecord::Base | @@ -255,7 +256,7 @@ class User < ActiveRecord::Base | ||
255 | raise IncorrectPassword unless self.authenticated?(current) | 256 | raise IncorrectPassword unless self.authenticated?(current) |
256 | self.force_change_password!(new, confirmation) | 257 | self.force_change_password!(new, confirmation) |
257 | end | 258 | end |
258 | - | 259 | + |
259 | # Changes the password of a user without asking for the old password. This | 260 | # Changes the password of a user without asking for the old password. This |
260 | # method is intended to be used by the "I forgot my password", and must be | 261 | # method is intended to be used by the "I forgot my password", and must be |
261 | # used with care. | 262 | # used with care. |
@@ -326,7 +327,7 @@ class User < ActiveRecord::Base | @@ -326,7 +327,7 @@ class User < ActiveRecord::Base | ||
326 | end | 327 | end |
327 | 328 | ||
328 | protected | 329 | protected |
329 | - # before filter | 330 | + # before filter |
330 | def encrypt_password | 331 | def encrypt_password |
331 | return if password.blank? | 332 | return if password.blank? |
332 | self.salt ||= Digest::SHA1.hexdigest("--#{Time.now.to_s}--#{login}--") if new_record? | 333 | self.salt ||= Digest::SHA1.hexdigest("--#{Time.now.to_s}--#{login}--") if new_record? |
app/views/features/index.rhtml
@@ -26,9 +26,13 @@ Check all the features you want to enable for your environment, uncheck all the | @@ -26,9 +26,13 @@ Check all the features you want to enable for your environment, uncheck all the | ||
26 | 26 | ||
27 | <h2><%= _('Configure features') %></h2> | 27 | <h2><%= _('Configure features') %></h2> |
28 | 28 | ||
29 | +<h3><%= _('Page to redirect after signup') %></h3> | ||
30 | + <%= select 'environment', 'redirection_after_signup', Environment.signup_redirection_options.map{|key,value|[value,key]} %> | ||
31 | +<hr/> | ||
29 | <h3><%= _('Page to redirect after login') %></h3> | 32 | <h3><%= _('Page to redirect after login') %></h3> |
30 | <%= select 'environment', 'redirection_after_login', Environment.login_redirection_options.map{|key,value|[value,key]} %> | 33 | <%= select 'environment', 'redirection_after_login', Environment.login_redirection_options.map{|key,value|[value,key]} %> |
31 | <hr/> | 34 | <hr/> |
35 | + | ||
32 | <h3><%= _('Organization Approval Method') %></h3> | 36 | <h3><%= _('Organization Approval Method') %></h3> |
33 | <%= select_organization_approval_method('environment', 'organization_approval_method') %> | 37 | <%= select_organization_approval_method('environment', 'organization_approval_method') %> |
34 | <hr/> | 38 | <hr/> |
app/views/user/mailer/activation_code.rhtml
1 | <%= _('Hi, %{recipient}!') % { :recipient => @recipient } %> | 1 | <%= _('Hi, %{recipient}!') % { :recipient => @recipient } %> |
2 | 2 | ||
3 | -<%= word_wrap(_('Welcome to %{environment}! To activate your account, follow the link: %{activation_url}') % { :environment => @environment, :activation_url => @url + url_for(:controller => :account, :action => :activate, :activation_code => @activation_code) }) %> | 3 | +<%= word_wrap(_('Welcome to %{environment}! To activate your account, follow the link: %{activation_url}') % { :environment => @environment, :activation_url => @url + url_for(:controller => :account, :action => :activate, :activation_code => @activation_code, :redirection => (true if @return_to) ) }) %> |
4 | 4 | ||
5 | <%= _("Greetings,") %> | 5 | <%= _("Greetings,") %> |
6 | 6 |
db/migrate/20140205191914_add_redirection_after_signup_to_environment.rb
0 → 100644
@@ -0,0 +1,9 @@ | @@ -0,0 +1,9 @@ | ||
1 | +class AddRedirectionAfterSignupToEnvironment < ActiveRecord::Migration | ||
2 | + def self.up | ||
3 | + add_column :environments, :redirection_after_signup, :string, :default => 'keep_on_same_page' | ||
4 | + end | ||
5 | + | ||
6 | + def self.down | ||
7 | + remove_column :environments, :redirection_after_signup | ||
8 | + end | ||
9 | +end |
db/schema.rb
1 | -# This file is auto-generated from the current state of the database. Instead of editing this file, | 1 | +# This file is auto-generated from the current state of the database. Instead of editing this file, |
2 | # please use the migrations feature of Active Record to incrementally modify your database, and | 2 | # please use the migrations feature of Active Record to incrementally modify your database, and |
3 | # then regenerate this schema definition. | 3 | # then regenerate this schema definition. |
4 | # | 4 | # |
@@ -9,7 +9,7 @@ | @@ -9,7 +9,7 @@ | ||
9 | # | 9 | # |
10 | # It's strongly recommended to check this file into your version control system. | 10 | # It's strongly recommended to check this file into your version control system. |
11 | 11 | ||
12 | -ActiveRecord::Schema.define(:version => 20140108132730) do | 12 | +ActiveRecord::Schema.define(:version => 20140312184749) do |
13 | 13 | ||
14 | create_table "abuse_reports", :force => true do |t| | 14 | create_table "abuse_reports", :force => true do |t| |
15 | t.integer "reporter_id" | 15 | t.integer "reporter_id" |
@@ -282,6 +282,7 @@ ActiveRecord::Schema.define(:version => 20140108132730) do | @@ -282,6 +282,7 @@ ActiveRecord::Schema.define(:version => 20140108132730) do | ||
282 | t.text "signup_welcome_text" | 282 | t.text "signup_welcome_text" |
283 | t.string "languages" | 283 | t.string "languages" |
284 | t.string "default_language" | 284 | t.string "default_language" |
285 | + t.string "redirection_after_signup", :default => "keep_on_same_page" | ||
285 | end | 286 | end |
286 | 287 | ||
287 | create_table "external_feeds", :force => true do |t| | 288 | create_table "external_feeds", :force => true do |t| |
@@ -619,6 +620,7 @@ ActiveRecord::Schema.define(:version => 20140108132730) do | @@ -619,6 +620,7 @@ ActiveRecord::Schema.define(:version => 20140108132730) do | ||
619 | t.datetime "chat_status_at" | 620 | t.datetime "chat_status_at" |
620 | t.string "activation_code", :limit => 40 | 621 | t.string "activation_code", :limit => 40 |
621 | t.datetime "activated_at" | 622 | t.datetime "activated_at" |
623 | + t.string "return_to" | ||
622 | end | 624 | end |
623 | 625 | ||
624 | create_table "validation_infos", :force => true do |t| | 626 | create_table "validation_infos", :force => true do |t| |
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,183 @@ Feature: signup | @@ -60,3 +60,183 @@ 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 user 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 | + | ||
144 | + @selenium | ||
145 | + Scenario: user should stay on same page after following confirmation link | ||
146 | + Given the environment is configured to stay on the same page after login | ||
147 | + And feature "skip_new_user_email_confirmation" is disabled on environment | ||
148 | + And I am on /search/people | ||
149 | + When I follow "Sign up" | ||
150 | + And I fill in the following within ".no-boxes": | ||
151 | + | e-Mail | josesilva@example.com | | ||
152 | + | Username | josesilva | | ||
153 | + | Password | secret | | ||
154 | + | Password confirmation | secret | | ||
155 | + | Full name | José da Silva | | ||
156 | + And wait for the captcha signup time | ||
157 | + And I press "Create my account" | ||
158 | + And I go to josesilva's confirmation URL | ||
159 | + And I fill in "Username" with "josesilva" | ||
160 | + And I fill in "Password" with "secret" | ||
161 | + And I press "Log in" | ||
162 | + Then I should be on /search/people | ||
163 | + | ||
164 | + @selenium | ||
165 | + Scenario: user should go to his homepage after following confirmation link | ||
166 | + Given the environment is configured to redirect to profile homepage after login | ||
167 | + And feature "skip_new_user_email_confirmation" is disabled on environment | ||
168 | + And I am on /search/people | ||
169 | + When I follow "Sign up" | ||
170 | + And I fill in the following within ".no-boxes": | ||
171 | + | e-Mail | josesilva@example.com | | ||
172 | + | Username | josesilva | | ||
173 | + | Password | secret | | ||
174 | + | Password confirmation | secret | | ||
175 | + | Full name | José da Silva | | ||
176 | + And wait for the captcha signup time | ||
177 | + And I press "Create my account" | ||
178 | + And I go to josesilva's confirmation URL | ||
179 | + And I fill in "Username" with "josesilva" | ||
180 | + And I fill in "Password" with "secret" | ||
181 | + And I press "Log in" | ||
182 | + Then I should be on /profile/josesilva | ||
183 | + | ||
184 | + @selenium | ||
185 | + Scenario: user should go to his control panel after following confirmation link | ||
186 | + Given the environment is configured to redirect to profile control panel after login | ||
187 | + And feature "skip_new_user_email_confirmation" is disabled on environment | ||
188 | + And I am on /search/people | ||
189 | + When I follow "Sign up" | ||
190 | + And I fill in the following within ".no-boxes": | ||
191 | + | e-Mail | josesilva@example.com | | ||
192 | + | Username | josesilva | | ||
193 | + | Password | secret | | ||
194 | + | Password confirmation | secret | | ||
195 | + | Full name | José da Silva | | ||
196 | + And wait for the captcha signup time | ||
197 | + And I press "Create my account" | ||
198 | + And I go to josesilva's confirmation URL | ||
199 | + And I fill in "Username" with "josesilva" | ||
200 | + And I fill in "Password" with "secret" | ||
201 | + And I press "Log in" | ||
202 | + Then I should be on /myprofile/josesilva | ||
203 | + | ||
204 | + @selenium | ||
205 | + Scenario: user should go to his profile page after following confirmation link | ||
206 | + Given the environment is configured to redirect to user profile page after login | ||
207 | + And feature "skip_new_user_email_confirmation" is disabled on environment | ||
208 | + And I am on /search/people | ||
209 | + When I follow "Sign up" | ||
210 | + And I fill in the following within ".no-boxes": | ||
211 | + | e-Mail | josesilva@example.com | | ||
212 | + | Username | josesilva | | ||
213 | + | Password | secret | | ||
214 | + | Password confirmation | secret | | ||
215 | + | Full name | José da Silva | | ||
216 | + And wait for the captcha signup time | ||
217 | + And I press "Create my account" | ||
218 | + And I go to josesilva's confirmation URL | ||
219 | + And I fill in "Username" with "josesilva" | ||
220 | + And I fill in "Password" with "secret" | ||
221 | + And I press "Log in" | ||
222 | + Then I should be on /profile/josesilva | ||
223 | + | ||
224 | + @selenium | ||
225 | + Scenario: user should go to the environment homepage after following confirmation link | ||
226 | + Given the environment is configured to redirect to site homepage after login | ||
227 | + And feature "skip_new_user_email_confirmation" is disabled on environment | ||
228 | + And I am on /search/people | ||
229 | + When I follow "Sign up" | ||
230 | + And I fill in the following within ".no-boxes": | ||
231 | + | e-Mail | josesilva@example.com | | ||
232 | + | Username | josesilva | | ||
233 | + | Password | secret | | ||
234 | + | Password confirmation | secret | | ||
235 | + | Full name | José da Silva | | ||
236 | + And wait for the captcha signup time | ||
237 | + And I press "Create my account" | ||
238 | + And I go to josesilva's confirmation URL | ||
239 | + And I fill in "Username" with "josesilva" | ||
240 | + And I fill in "Password" with "secret" | ||
241 | + And I press "Log in" | ||
242 | + Then I should be on the homepage |
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 |
features/support/paths.rb
@@ -111,6 +111,10 @@ module NavigationHelpers | @@ -111,6 +111,10 @@ module NavigationHelpers | ||
111 | when /the user data path/ | 111 | when /the user data path/ |
112 | '/account/user_data' | 112 | '/account/user_data' |
113 | 113 | ||
114 | + when /^(.+)'s confirmation URL/ | ||
115 | + user = User[$1] | ||
116 | + "/account/activate?activation_code=#{user.activation_code}&redirection=" + (user.return_to.nil? ? 'false' : 'true') | ||
117 | + | ||
114 | when /^(.+)'s members page/ | 118 | when /^(.+)'s members page/ |
115 | '/profile/%s/members' % profile_identifier($1) | 119 | '/profile/%s/members' % profile_identifier($1) |
116 | 120 |
test/unit/environment_test.rb
@@ -1220,6 +1220,27 @@ class EnvironmentTest < ActiveSupport::TestCase | @@ -1220,6 +1220,27 @@ class EnvironmentTest < ActiveSupport::TestCase | ||
1220 | end | 1220 | end |
1221 | end | 1221 | end |
1222 | 1222 | ||
1223 | + should 'return a Hash on signup redirection options' do | ||
1224 | + assert_kind_of Hash, Environment.signup_redirection_options | ||
1225 | + end | ||
1226 | + | ||
1227 | + should 'respond to redirection after signup' do | ||
1228 | + assert_respond_to Environment.new, :redirection_after_signup | ||
1229 | + end | ||
1230 | + | ||
1231 | + should 'allow only environment signup redirection options' do | ||
1232 | + environment = fast_create(Environment) | ||
1233 | + environment.redirection_after_signup = 'invalid_option' | ||
1234 | + environment.save | ||
1235 | + assert environment.errors.invalid?(:redirection_after_signup) | ||
1236 | + | ||
1237 | + Environment.signup_redirection_options.keys.each do |redirection| | ||
1238 | + environment.redirection_after_signup = redirection | ||
1239 | + environment.save | ||
1240 | + assert !environment.errors.invalid?(:redirection_after_signup) | ||
1241 | + end | ||
1242 | + end | ||
1243 | + | ||
1223 | should 'respond to signup_welcome_text' do | 1244 | should 'respond to signup_welcome_text' do |
1224 | assert_respond_to Environment.new, :signup_welcome_text | 1245 | assert_respond_to Environment.new, :signup_welcome_text |
1225 | end | 1246 | end |