mirror of
https://github.com/discourse/discourse.git
synced 2025-05-29 01:31:35 +08:00
FEATURE: add a setting to allowlist DiscourseConnect return path domains (#21110)
* FEATURE: add a setting to allowlist DiscourseConnect return path domains This commit adds a site setting to allowlist DiscourseConnect return path domains. The setting needs supports exact domain or wildcard character (*) to allow for any domain as return path. * Add more specs to clarify what is allowed in site setting * Update setting description to explain what is allowed
This commit is contained in:
@ -208,7 +208,7 @@ class SessionController < ApplicationController
|
||||
uri = URI(return_path)
|
||||
if (uri.hostname == Discourse.current_hostname)
|
||||
return_path = uri.to_s
|
||||
elsif !SiteSetting.discourse_connect_allows_all_return_paths
|
||||
elsif !domain_redirect_allowed?(uri.hostname)
|
||||
return_path = path("/")
|
||||
end
|
||||
rescue StandardError
|
||||
@ -808,4 +808,12 @@ class SessionController < ApplicationController
|
||||
Rails.logger.warn("SSO invite redemption failed: #{e}")
|
||||
raise Invite::RedemptionFailed
|
||||
end
|
||||
|
||||
def domain_redirect_allowed?(hostname)
|
||||
allowed_domains = SiteSetting.discourse_connect_allowed_redirect_domains
|
||||
return false if allowed_domains.blank?
|
||||
return true if allowed_domains.split("|").include?("*")
|
||||
|
||||
allowed_domains.split("|").include?(hostname)
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user