mirror of
				https://github.com/discourse/discourse.git
				synced 2025-02-25 18:55:32 -06:00 
			
		
		
		
	FEATURE: Rename 'Discourse SSO' to DiscourseConnect (#11978)
The 'Discourse SSO' protocol is being rebranded to DiscourseConnect. This should help to reduce confusion when 'SSO' is used in the generic sense. This commit aims to: - Rename `sso_` site settings. DiscourseConnect specific ones are prefixed `discourse_connect_`. Generic settings are prefixed `auth_` - Add (server-side-only) backwards compatibility for the old setting names, with deprecation notices - Copy `site_settings` database records to the new names - Rename relevant translation keys - Update relevant translations This commit does **not** aim to: - Rename any Ruby classes or methods. This might be done in a future commit - Change any URLs. This would break existing integrations - Make any changes to the protocol. This would break existing integrations - Change any functionality. Further normalization across DiscourseConnect and other auth methods will be done separately The risks are: - There is no backwards compatibility for site settings on the client-side. Accessing auth-related site settings in Javascript is fairly rare, and an error on the client side would not be security-critical. - If a plugin is monkey-patching parts of the auth process, changes to locale keys could cause broken error messages. This should also be unlikely. The old site setting names remain functional, so security-related overrides will remain working. A follow-up commit will be made with a post-deploy migration to delete the old `site_settings` rows.
This commit is contained in:
		@@ -6,11 +6,11 @@ class DiscourseSingleSignOn < SingleSignOn
 | 
			
		||||
  class BannedExternalId < StandardError; end
 | 
			
		||||
 | 
			
		||||
  def self.sso_url
 | 
			
		||||
    SiteSetting.sso_url
 | 
			
		||||
    SiteSetting.discourse_connect_url
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def self.sso_secret
 | 
			
		||||
    SiteSetting.sso_secret
 | 
			
		||||
    SiteSetting.discourse_connect_secret
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def self.generate_sso(return_path = "/")
 | 
			
		||||
@@ -120,7 +120,7 @@ class DiscourseSingleSignOn < SingleSignOn
 | 
			
		||||
    # The user might require approval
 | 
			
		||||
    user.create_reviewable
 | 
			
		||||
 | 
			
		||||
    if bio && (user.user_profile.bio_raw.blank? || SiteSetting.sso_overrides_bio)
 | 
			
		||||
    if bio && (user.user_profile.bio_raw.blank? || SiteSetting.discourse_connect_overrides_bio)
 | 
			
		||||
      user.user_profile.bio_raw = bio
 | 
			
		||||
      user.user_profile.save!
 | 
			
		||||
    end
 | 
			
		||||
@@ -170,7 +170,7 @@ class DiscourseSingleSignOn < SingleSignOn
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def apply_group_rules(user)
 | 
			
		||||
    if SiteSetting.sso_overrides_groups
 | 
			
		||||
    if SiteSetting.discourse_connect_overrides_groups
 | 
			
		||||
      synchronize_groups(user)
 | 
			
		||||
      return
 | 
			
		||||
    end
 | 
			
		||||
@@ -219,7 +219,7 @@ class DiscourseSingleSignOn < SingleSignOn
 | 
			
		||||
 | 
			
		||||
        user = User.create!(user_params)
 | 
			
		||||
 | 
			
		||||
        if SiteSetting.verbose_sso_logging
 | 
			
		||||
        if SiteSetting.verbose_discourse_connect_logging
 | 
			
		||||
          Rails.logger.warn("Verbose SSO log: New User (user_id: #{user.id}) Params: #{user_params} User Params: #{user.attributes} User Errors: #{user.errors.full_messages} Email: #{user.primary_email.attributes} Email Error: #{user.primary_email.errors.full_messages}")
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
@@ -233,7 +233,7 @@ class DiscourseSingleSignOn < SingleSignOn
 | 
			
		||||
            Jobs.enqueue(:download_avatar_from_url,
 | 
			
		||||
              url: avatar_url,
 | 
			
		||||
              user_id: user.id,
 | 
			
		||||
              override_gravatar: SiteSetting.sso_overrides_avatar
 | 
			
		||||
              override_gravatar: SiteSetting.discourse_connect_overrides_avatar
 | 
			
		||||
            )
 | 
			
		||||
          end
 | 
			
		||||
 | 
			
		||||
@@ -273,13 +273,13 @@ class DiscourseSingleSignOn < SingleSignOn
 | 
			
		||||
  def change_external_attributes_and_override(sso_record, user)
 | 
			
		||||
    @email_changed = false
 | 
			
		||||
 | 
			
		||||
    if SiteSetting.sso_overrides_email && user.email != Email.downcase(email)
 | 
			
		||||
    if SiteSetting.auth_overrides_email && user.email != Email.downcase(email)
 | 
			
		||||
      user.email = email
 | 
			
		||||
      user.active = false if require_activation
 | 
			
		||||
      @email_changed = true
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    if SiteSetting.sso_overrides_username? && username.present?
 | 
			
		||||
    if SiteSetting.auth_overrides_username? && username.present?
 | 
			
		||||
      if user.username.downcase == username.downcase
 | 
			
		||||
        user.username = username # there may be a change of case
 | 
			
		||||
      elsif user.username != username
 | 
			
		||||
@@ -287,7 +287,7 @@ class DiscourseSingleSignOn < SingleSignOn
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    if SiteSetting.sso_overrides_name && user.name != name && name.present?
 | 
			
		||||
    if SiteSetting.auth_overrides_name && user.name != name && name.present?
 | 
			
		||||
      user.name = name || User.suggest_name(username.blank? ? email : username)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
@@ -297,18 +297,18 @@ class DiscourseSingleSignOn < SingleSignOn
 | 
			
		||||
 | 
			
		||||
    avatar_missing = user.uploaded_avatar_id.nil? || !Upload.exists?(user.uploaded_avatar_id)
 | 
			
		||||
 | 
			
		||||
    if (avatar_missing || avatar_force_update || SiteSetting.sso_overrides_avatar) && avatar_url.present?
 | 
			
		||||
    if (avatar_missing || avatar_force_update || SiteSetting.discourse_connect_overrides_avatar) && avatar_url.present?
 | 
			
		||||
      avatar_changed = sso_record.external_avatar_url != avatar_url
 | 
			
		||||
 | 
			
		||||
      if avatar_force_update || avatar_changed || avatar_missing
 | 
			
		||||
        Jobs.enqueue(:download_avatar_from_url, url: avatar_url, user_id: user.id, override_gravatar: SiteSetting.sso_overrides_avatar)
 | 
			
		||||
        Jobs.enqueue(:download_avatar_from_url, url: avatar_url, user_id: user.id, override_gravatar: SiteSetting.discourse_connect_overrides_avatar)
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    if profile_background_url.present?
 | 
			
		||||
      profile_background_missing = user.user_profile.profile_background_upload.blank? || Upload.get_from_url(user.user_profile.profile_background_upload.url).blank?
 | 
			
		||||
 | 
			
		||||
      if profile_background_missing || SiteSetting.sso_overrides_profile_background
 | 
			
		||||
      if profile_background_missing || SiteSetting.discourse_connect_overrides_profile_background
 | 
			
		||||
        profile_background_changed = sso_record.external_profile_background_url != profile_background_url
 | 
			
		||||
        if profile_background_changed || profile_background_missing
 | 
			
		||||
          Jobs.enqueue(:download_profile_background_from_url,
 | 
			
		||||
@@ -322,7 +322,7 @@ class DiscourseSingleSignOn < SingleSignOn
 | 
			
		||||
 | 
			
		||||
    if card_background_url.present?
 | 
			
		||||
      card_background_missing = user.user_profile.card_background_upload.blank? || Upload.get_from_url(user.user_profile.card_background_upload.url).blank?
 | 
			
		||||
      if card_background_missing || SiteSetting.sso_overrides_profile_background
 | 
			
		||||
      if card_background_missing || SiteSetting.discourse_connect_overrides_profile_background
 | 
			
		||||
        card_background_changed = sso_record.external_card_background_url != card_background_url
 | 
			
		||||
        if card_background_changed || card_background_missing
 | 
			
		||||
          Jobs.enqueue(:download_profile_background_from_url,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user