From 866e04f7768cb504972a4e8626ff1938603ba617 Mon Sep 17 00:00:00 2001 From: kikito Date: Mon, 21 Dec 2015 16:44:30 +0100 Subject: [PATCH 1/4] makes devise remember the last visited page before login in --- app/controllers/application_controller.rb | 7 +++++++ app/controllers/users/sessions_controller.rb | 16 ++++++++-------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 719c8abc4..841b32498 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -10,6 +10,7 @@ class ApplicationController < ActionController::Base before_action :ensure_signup_complete before_action :set_locale before_action :track_email_campaign + before_action :set_return_url check_authorization unless: :devise_controller? self.responder = ApplicationResponder @@ -101,4 +102,10 @@ class ApplicationController < ActionController::Base ahoy.track campaign.name if campaign.present? end end + + def set_return_url + if !devise_controller? && controller_name != 'welcome' && is_navigational_format? + store_location_for(:user, request.path) + end + end end diff --git a/app/controllers/users/sessions_controller.rb b/app/controllers/users/sessions_controller.rb index d1c1509f1..dac2d7d4b 100644 --- a/app/controllers/users/sessions_controller.rb +++ b/app/controllers/users/sessions_controller.rb @@ -1,15 +1,15 @@ class Users::SessionsController < Devise::SessionsController - def after_sign_in_path_for(resource) - if !verifying_via_email? && resource.show_welcome_screen? - welcome_path - else - super - end - end - private + def after_sign_in_path_for(resource) + if !verifying_via_email? && resource.show_welcome_screen? + welcome_path + else + super + end + end + def verifying_via_email? return false unless resource.present? stored_path = session[stored_location_key_for(resource)] || "" From d194bf0adc43e32fdf74a7203a00f96f6a2a5272 Mon Sep 17 00:00:00 2001 From: kikito Date: Tue, 22 Dec 2015 11:19:06 +0100 Subject: [PATCH 2/4] takes the user to the same page he was in after logout --- app/controllers/users/sessions_controller.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/controllers/users/sessions_controller.rb b/app/controllers/users/sessions_controller.rb index dac2d7d4b..046d0a6f2 100644 --- a/app/controllers/users/sessions_controller.rb +++ b/app/controllers/users/sessions_controller.rb @@ -10,6 +10,10 @@ class Users::SessionsController < Devise::SessionsController end end + def after_sign_out_path_for(resource) + request.referrer.present? ? request.referrer : super + end + def verifying_via_email? return false unless resource.present? stored_path = session[stored_location_key_for(resource)] || "" From 5f563911ad35ddada9bb488949cfacb64713b127 Mon Sep 17 00:00:00 2001 From: kikito Date: Tue, 22 Dec 2015 11:26:42 +0100 Subject: [PATCH 3/4] adds a test --- spec/features/sessions_spec.rb | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 spec/features/sessions_spec.rb diff --git a/spec/features/sessions_spec.rb b/spec/features/sessions_spec.rb new file mode 100644 index 000000000..990a94d5f --- /dev/null +++ b/spec/features/sessions_spec.rb @@ -0,0 +1,23 @@ +require 'rails_helper' + +feature 'Sessions' do + + scenario 'Staying in the same page after doing login/logout' do + user = create(:user, sign_in_count: 10) + debate = create(:debate) + + visit debate_path(debate) + + login_through_form_as(user) + + expect(page).to have_content('You have been signed in successfully') + expect(current_path).to eq(debate_path(debate)) + + click_link 'Sign out' + + expect(page).to have_content('You have been signed out successfully') + expect(current_path).to eq(debate_path(debate)) + end + +end + From 8c8e837dfc1efb77072fbfeea49f3ba65f81b905 Mon Sep 17 00:00:00 2001 From: kikito Date: Tue, 22 Dec 2015 12:14:42 +0100 Subject: [PATCH 4/4] fixes failing moderation spec --- spec/features/moderation/users_spec.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/spec/features/moderation/users_spec.rb b/spec/features/moderation/users_spec.rb index 46ab7fe2a..caace7d9c 100644 --- a/spec/features/moderation/users_spec.rb +++ b/spec/features/moderation/users_spec.rb @@ -39,6 +39,8 @@ feature 'Moderate users' do click_link("Sign out") + visit root_path + click_link 'Sign in' fill_in 'user_email', with: citizen.email fill_in 'user_password', with: citizen.password @@ -72,4 +74,4 @@ feature 'Moderate users' do end end -end \ No newline at end of file +end