From 42b33f29ae8a7af66b1edcb2cec50e297d64dab4 Mon Sep 17 00:00:00 2001 From: rhymes Date: Tue, 4 Feb 2020 15:41:10 +0100 Subject: [PATCH] Add signin=true as a param correctly if the URL already has params (#5866) [deploy] --- app/controllers/application_controller.rb | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index ccaea5bf3..2fc301def 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -40,9 +40,22 @@ class ApplicationController < ActionController::Base end def after_sign_in_path_for(resource) - return "/onboarding?referrer=#{request.env['omniauth.origin'] || 'none'}" unless current_user.saw_onboarding + if current_user.saw_onboarding + path = request.env["omniauth.origin"] || stored_location_for(resource) || dashboard_path + signin_param = { "signin" => "true" } # the "signin" param is used by the service worker - (request.env["omniauth.origin"] || stored_location_for(resource) || "/dashboard") + "?signin=true" # This signin=true param is used by frontend + uri = Addressable::URI.parse(path) + uri.query_values = if uri.query_values + uri.query_values.merge(signin_param) + else + signin_param + end + + uri.to_s + else + referrer = request.env["omniauth.origin"] || "none" + onboarding_path(referrer: referrer) + end end def raise_banned