FIX: Handle missing provider return sso url
This commit prevents a 500 error from occurring if someone is trying to setup their discourse instance as a sso provider and they don't pass in a `return_sso_url` in their payload.
This commit is contained in:
parent
9981fa4466
commit
4078b22887
|
@ -19,6 +19,7 @@ class SingleSignOnProvider < SingleSignOn
|
||||||
decoded = Base64.decode64(parsed["sso"])
|
decoded = Base64.decode64(parsed["sso"])
|
||||||
decoded_hash = Rack::Utils.parse_query(decoded)
|
decoded_hash = Rack::Utils.parse_query(decoded)
|
||||||
|
|
||||||
|
raise ParseError unless decoded_hash.key? 'return_sso_url'
|
||||||
@return_sso_url = decoded_hash['return_sso_url']
|
@return_sso_url = decoded_hash['return_sso_url']
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -1055,6 +1055,13 @@ RSpec.describe SessionController do
|
||||||
expect(response.body).to eq(I18n.t("sso.missing_secret"))
|
expect(response.body).to eq(I18n.t("sso.missing_secret"))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "returns a 422 if no return_sso_url" do
|
||||||
|
SiteSetting.sso_provider_secrets = "abcdefghij"
|
||||||
|
sso = SingleSignOnProvider.new
|
||||||
|
get "/session/sso_provider?sso=asdf&sig=abcdefghij"
|
||||||
|
expect(response.status).to eq(422)
|
||||||
|
end
|
||||||
|
|
||||||
it "successfully redirects user to return_sso_url when the user is logged in" do
|
it "successfully redirects user to return_sso_url when the user is logged in" do
|
||||||
sign_in(@user)
|
sign_in(@user)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue