diff options
author | Rémy Coutable <remy@rymai.me> | 2017-04-03 11:04:55 +0000 |
---|---|---|
committer | Rémy Coutable <remy@rymai.me> | 2017-04-03 11:04:55 +0000 |
commit | 8a6104d054b36984615c7c6b93c849100c6d6f91 (patch) | |
tree | 4af994311440e4821328f44259a48cba4448ac22 | |
parent | fee8dcde1960470b6c9890993f0dfd08dfc63ed1 (diff) | |
parent | af0c08b6f92a0933e24414bea11344162cda6c43 (diff) | |
download | gitlab-ce-8a6104d054b36984615c7c6b93c849100c6d6f91.tar.gz |
Merge branch '29669-redirect-referer-params' into 'master'
Fix redirection after login when the referer have params
Closes #29669
See merge request !10397
-rw-r--r-- | app/controllers/sessions_controller.rb | 2 | ||||
-rw-r--r-- | changelogs/unreleased/29669-redirect-referer-params.yml | 4 | ||||
-rw-r--r-- | spec/controllers/sessions_controller_spec.rb | 16 |
3 files changed, 21 insertions, 1 deletions
diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index 7d81c96262f..d8561871098 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -79,7 +79,7 @@ class SessionsController < Devise::SessionsController if request.referer.present? && (params['redirect_to_referer'] == 'yes') referer_uri = URI(request.referer) if referer_uri.host == Gitlab.config.gitlab.host - referer_uri.path + referer_uri.request_uri else request.fullpath end diff --git a/changelogs/unreleased/29669-redirect-referer-params.yml b/changelogs/unreleased/29669-redirect-referer-params.yml new file mode 100644 index 00000000000..d8fc7f33049 --- /dev/null +++ b/changelogs/unreleased/29669-redirect-referer-params.yml @@ -0,0 +1,4 @@ +--- +title: Fix redirection after login when the referer have params +merge_request: +author: mhasbini diff --git a/spec/controllers/sessions_controller_spec.rb b/spec/controllers/sessions_controller_spec.rb index a06c29dd91a..9c16a7bc08b 100644 --- a/spec/controllers/sessions_controller_spec.rb +++ b/spec/controllers/sessions_controller_spec.rb @@ -211,4 +211,20 @@ describe SessionsController do end end end + + describe '#new' do + before do + @request.env['devise.mapping'] = Devise.mappings[:user] + end + + it 'redirects correctly for referer on same host with params' do + search_path = '/search?search=seed_project' + allow(controller.request).to receive(:referer). + and_return('http://%{host}%{path}' % { host: Gitlab.config.gitlab.host, path: search_path }) + + get(:new, redirect_to_referer: :yes) + + expect(controller.stored_location_for(:redirect)).to eq(search_path) + end + end end |