complete the oauth flow when logged in via a session token
fixes CNVS-38458 Change-Id: Iea165f46c2f6f0214011262761fd67c40c67f7d7 Reviewed-on: https://gerrit.instructure.com/121825 Tested-by: Jenkins Reviewed-by: Tyler Pickett <tpickett@instructure.com> QA-Review: Tucker McKnight <tmcknight@instructure.com> Product-Review: Cody Cutrer <cody@instructure.com>
This commit is contained in:
parent
82ade33181
commit
b65b4ba7aa
|
@ -1003,7 +1003,7 @@ class ApplicationController < ActionController::Base
|
||||||
end
|
end
|
||||||
if pseudonym && pseudonym != @current_pseudonym
|
if pseudonym && pseudonym != @current_pseudonym
|
||||||
return_to = session.delete(:return_to)
|
return_to = session.delete(:return_to)
|
||||||
reset_session
|
reset_session_saving_keys(:oauth2)
|
||||||
PseudonymSession.create!(pseudonym)
|
PseudonymSession.create!(pseudonym)
|
||||||
session[:used_remember_me_token] = true if token.used_remember_me_token
|
session[:used_remember_me_token] = true if token.used_remember_me_token
|
||||||
end
|
end
|
||||||
|
@ -1013,6 +1013,11 @@ class ApplicationController < ActionController::Base
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return redirect_to return_to if return_to
|
return redirect_to return_to if return_to
|
||||||
|
if (oauth = session[:oauth2])
|
||||||
|
provider = Canvas::Oauth::Provider.new(oauth[:client_id], oauth[:redirect_uri], oauth[:scopes], oauth[:purpose])
|
||||||
|
return redirect_to Canvas::Oauth::Provider.confirmation_redirect(self, provider, pseudonym.user)
|
||||||
|
end
|
||||||
|
|
||||||
# do one final redirect to get the token out of the URL
|
# do one final redirect to get the token out of the URL
|
||||||
redirect_to remove_query_params(request.original_url, 'session_token')
|
redirect_to remove_query_params(request.original_url, 'session_token')
|
||||||
end
|
end
|
||||||
|
|
|
@ -300,6 +300,14 @@ describe "API Authentication", type: :request do
|
||||||
expect(response).to be_client_error
|
expect(response).to be_client_error
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "works when the user logs in via a session_token" do
|
||||||
|
flow do
|
||||||
|
follow_redirect!
|
||||||
|
expect(response).to redirect_to(canvas_login_url)
|
||||||
|
get root_url, params: { session_token: SessionToken.new(@pseudonym.id) }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context "sharding" do
|
context "sharding" do
|
||||||
specs_require_sharding
|
specs_require_sharding
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue