summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2017-04-03 11:04:55 +0000
committerRémy Coutable <remy@rymai.me>2017-04-03 11:04:55 +0000
commit8a6104d054b36984615c7c6b93c849100c6d6f91 (patch)
tree4af994311440e4821328f44259a48cba4448ac22
parentfee8dcde1960470b6c9890993f0dfd08dfc63ed1 (diff)
parentaf0c08b6f92a0933e24414bea11344162cda6c43 (diff)
downloadgitlab-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.rb2
-rw-r--r--changelogs/unreleased/29669-redirect-referer-params.yml4
-rw-r--r--spec/controllers/sessions_controller_spec.rb16
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