From 9714061bb0f099f3800ffdc75bc8807ee783e32a Mon Sep 17 00:00:00 2001 From: Marin Jankovski Date: Mon, 21 Jul 2014 15:45:27 +0200 Subject: [PATCH 1/2] If the referer is not set, use fullpath. --- app/controllers/sessions_controller.rb | 9 ++++++++- features/steps/project/redirects.rb | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index 9b7bd94c3a2..3f896f46c6c 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -2,7 +2,14 @@ class SessionsController < Devise::SessionsController def new if request.referer.present? - store_location_for(:redirect, URI(request.referer).path) + referer_uri = URI(request.referer) + if referer_uri.host == Gitlab.config.gitlab.host + store_location_for(:redirect, referer_uri.path) + else + store_location_for(:redirect, request.fullpath) + end + else + store_location_for(:redirect, request.fullpath) end super diff --git a/features/steps/project/redirects.rb b/features/steps/project/redirects.rb index 25d37fd7888..7e01735af95 100644 --- a/features/steps/project/redirects.rb +++ b/features/steps/project/redirects.rb @@ -17,6 +17,7 @@ class Spinach::Features::ProjectRedirects < Spinach::FeatureSteps end step 'I should see project "Community" home page' do + Gitlab.config.gitlab.stub(:host).and_return("www.example.com") within '.project-home-title' do page.should have_content 'Community' end From b4217500352efcc463ee0517a97d37c41e66ddd5 Mon Sep 17 00:00:00 2001 From: Marin Jankovski Date: Tue, 22 Jul 2014 08:34:16 +0200 Subject: [PATCH 2/2] Call store_location_for once. --- app/controllers/sessions_controller.rb | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index 3f896f46c6c..f7d5ca08c05 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -1,16 +1,18 @@ class SessionsController < Devise::SessionsController def new - if request.referer.present? - referer_uri = URI(request.referer) - if referer_uri.host == Gitlab.config.gitlab.host - store_location_for(:redirect, referer_uri.path) - else - store_location_for(:redirect, request.fullpath) - end - else - store_location_for(:redirect, request.fullpath) - end + redirect_url = if request.referer.present? + referer_uri = URI(request.referer) + if referer_uri.host == Gitlab.config.gitlab.host + referer_uri.path + else + request.fullpath + end + else + request.fullpath + end + + store_location_for(:redirect, redirect_url) super end