26 lines
742 B
Ruby
26 lines
742 B
Ruby
|
class DiscourseSsoController < DiscourseController
|
||
|
|
||
|
before_filter -> { require_config_enabled :discourse_sso }
|
||
|
|
||
|
def sso
|
||
|
raise I18n.t('discourse.sso.invalid_signature') unless valid_signature?
|
||
|
|
||
|
payload = parse_payload
|
||
|
nonce = payload[:nonce]
|
||
|
return_sso_url = payload[:return_sso_url] || "#{discourse_url}/session/sso_login"
|
||
|
|
||
|
raise I18n.t('discourse.sso.nonce_missing') if nonce.blank?
|
||
|
|
||
|
redirect_to_with_payload return_sso_url,
|
||
|
nonce: nonce,
|
||
|
email: current_user.email,
|
||
|
require_activation: true,
|
||
|
external_id: "#{FoodsoftConfig.scope}/#{current_user.id}",
|
||
|
username: current_user.nick,
|
||
|
name: current_user.name
|
||
|
rescue => error
|
||
|
redirect_to root_url, alert: error.to_s
|
||
|
end
|
||
|
|
||
|
end
|