From 4953deda8bf548eaf9015766c4843f7ff4eb9232 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 16 Jun 2025 10:36:23 -0400 Subject: [PATCH] Move single user mode config to `x.mastodon` area --- app/controllers/application_controller.rb | 2 +- app/helpers/registration_helper.rb | 2 +- app/serializers/initial_state_serializer.rb | 6 +++--- app/serializers/node_info/serializer.rb | 2 +- app/serializers/rest/instance_serializer.rb | 2 +- app/serializers/rest/v1/instance_serializer.rb | 2 +- config/initializers/single_user_mode.rb | 5 ----- config/mastodon.yml | 1 + spec/controllers/application_controller_spec.rb | 6 +++--- spec/controllers/auth/registrations_controller_spec.rb | 8 ++++---- 10 files changed, 16 insertions(+), 20 deletions(-) delete mode 100644 config/initializers/single_user_mode.rb diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 82d9e8380fc..c00c09763c5 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -148,7 +148,7 @@ class ApplicationController < ActionController::Base end def single_user_mode? - @single_user_mode ||= Rails.configuration.x.single_user_mode && Account.without_internal.exists? + @single_user_mode ||= Rails.configuration.x.mastodon.single_user_mode && Account.without_internal.exists? end def use_seamless_external_login? diff --git a/app/helpers/registration_helper.rb b/app/helpers/registration_helper.rb index 002d167c058..6353ac604b7 100644 --- a/app/helpers/registration_helper.rb +++ b/app/helpers/registration_helper.rb @@ -4,7 +4,7 @@ module RegistrationHelper extend ActiveSupport::Concern def allowed_registration?(remote_ip, invite) - !Rails.configuration.x.single_user_mode && !omniauth_only? && (registrations_open? || invite&.valid_for_use?) && !ip_blocked?(remote_ip) + !Rails.configuration.x.mastodon.single_user_mode && !omniauth_only? && (registrations_open? || invite&.valid_for_use?) && !ip_blocked?(remote_ip) end def registrations_open? diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb index 7926cc54be9..1a88748e2f8 100644 --- a/app/serializers/initial_state_serializer.rb +++ b/app/serializers/initial_state_serializer.rb @@ -41,7 +41,7 @@ class InitialStateSerializer < ActiveModel::Serializer store[:disabled_account_id] = object.disabled_account.id.to_s if object.disabled_account store[:moved_to_account_id] = object.moved_to_account.id.to_s if object.moved_to_account - store[:owner] = object.owner&.id&.to_s if Rails.configuration.x.single_user_mode + store[:owner] = object.owner&.id&.to_s if Rails.configuration.x.mastodon.single_user_mode store end @@ -103,10 +103,10 @@ class InitialStateSerializer < ActiveModel::Serializer locale: I18n.locale, mascot: instance_presenter.mascot&.file&.url, profile_directory: Setting.profile_directory, - registrations_open: Setting.registrations_mode != 'none' && !Rails.configuration.x.single_user_mode, + registrations_open: Setting.registrations_mode != 'none' && !Rails.configuration.x.mastodon.single_user_mode, repository: Mastodon::Version.repository, search_enabled: Chewy.enabled?, - single_user_mode: Rails.configuration.x.single_user_mode, + single_user_mode: Rails.configuration.x.mastodon.single_user_mode, source_url: instance_presenter.source_url, sso_redirect: sso_redirect, status_page_url: Setting.status_page_url, diff --git a/app/serializers/node_info/serializer.rb b/app/serializers/node_info/serializer.rb index 3920b3ee424..71efcf8a09f 100644 --- a/app/serializers/node_info/serializer.rb +++ b/app/serializers/node_info/serializer.rb @@ -34,7 +34,7 @@ class NodeInfo::Serializer < ActiveModel::Serializer end def open_registrations - Setting.registrations_mode != 'none' && !Rails.configuration.x.single_user_mode + Setting.registrations_mode != 'none' && !Rails.configuration.x.mastodon.single_user_mode end def metadata diff --git a/app/serializers/rest/instance_serializer.rb b/app/serializers/rest/instance_serializer.rb index 3008df5e81c..1e1f00ea136 100644 --- a/app/serializers/rest/instance_serializer.rb +++ b/app/serializers/rest/instance_serializer.rb @@ -122,7 +122,7 @@ class REST::InstanceSerializer < ActiveModel::Serializer private def registrations_enabled? - Setting.registrations_mode != 'none' && !Rails.configuration.x.single_user_mode + Setting.registrations_mode != 'none' && !Rails.configuration.x.mastodon.single_user_mode end def registrations_message diff --git a/app/serializers/rest/v1/instance_serializer.rb b/app/serializers/rest/v1/instance_serializer.rb index a1d51f50e42..9dfd7ae777e 100644 --- a/app/serializers/rest/v1/instance_serializer.rb +++ b/app/serializers/rest/v1/instance_serializer.rb @@ -79,7 +79,7 @@ class REST::V1::InstanceSerializer < ActiveModel::Serializer end def registrations - Setting.registrations_mode != 'none' && !Rails.configuration.x.single_user_mode + Setting.registrations_mode != 'none' && !Rails.configuration.x.mastodon.single_user_mode end def approval_required diff --git a/config/initializers/single_user_mode.rb b/config/initializers/single_user_mode.rb deleted file mode 100644 index 4945f7f22f8..00000000000 --- a/config/initializers/single_user_mode.rb +++ /dev/null @@ -1,5 +0,0 @@ -# frozen_string_literal: true - -Rails.application.configure do - config.x.single_user_mode = ENV['SINGLE_USER_MODE'] == 'true' -end diff --git a/config/mastodon.yml b/config/mastodon.yml index 4585e1f2aee..988c9f06f0f 100644 --- a/config/mastodon.yml +++ b/config/mastodon.yml @@ -3,6 +3,7 @@ shared: experimental_features: <%= ENV.fetch('EXPERIMENTAL_FEATURES', nil) %> limited_federation_mode: <%= (ENV.fetch('LIMITED_FEDERATION_MODE', nil) || ENV.fetch('WHITELIST_MODE', nil)) == 'true' %> self_destruct_value: <%= ENV.fetch('SELF_DESTRUCT', nil)&.to_json %> + single_user_mode: <%= ENV.fetch('SINGLE_USER_MODE', nil) == 'true' %> software_update_url: <%= ENV.fetch('UPDATE_CHECK_URL', 'https://api.joinmastodon.org/update-check')&.to_json %> source: base_url: <%= ENV.fetch('SOURCE_BASE_URL', nil)&.to_json %> diff --git a/spec/controllers/application_controller_spec.rb b/spec/controllers/application_controller_spec.rb index ea182a047f1..c6c16971ccb 100644 --- a/spec/controllers/application_controller_spec.rb +++ b/spec/controllers/application_controller_spec.rb @@ -68,18 +68,18 @@ RSpec.describe ApplicationController do describe 'helper_method :single_user_mode?' do it 'returns false if it is in single_user_mode but there is no account' do - allow(Rails.configuration.x).to receive(:single_user_mode).and_return(true) + allow(Rails.configuration.x.mastodon).to receive(:single_user_mode).and_return(true) expect(controller.view_context.single_user_mode?).to be false end it 'returns false if there is an account but it is not in single_user_mode' do - allow(Rails.configuration.x).to receive(:single_user_mode).and_return(false) + allow(Rails.configuration.x.mastodon).to receive(:single_user_mode).and_return(false) Fabricate(:account) expect(controller.view_context.single_user_mode?).to be false end it 'returns true if it is in single_user_mode and there is an account' do - allow(Rails.configuration.x).to receive(:single_user_mode).and_return(true) + allow(Rails.configuration.x.mastodon).to receive(:single_user_mode).and_return(true) Fabricate(:account) expect(controller.view_context.single_user_mode?).to be true end diff --git a/spec/controllers/auth/registrations_controller_spec.rb b/spec/controllers/auth/registrations_controller_spec.rb index a110717166d..22a2b62413b 100644 --- a/spec/controllers/auth/registrations_controller_spec.rb +++ b/spec/controllers/auth/registrations_controller_spec.rb @@ -9,7 +9,7 @@ RSpec.describe Auth::RegistrationsController do context 'when in single user mode and open for registration' do before do Setting.registrations_mode = 'open' - allow(Rails.configuration.x).to receive(:single_user_mode).and_return(true) + allow(Rails.configuration.x.mastodon).to receive(:single_user_mode).and_return(true) end it 'redirects to root' do @@ -17,21 +17,21 @@ RSpec.describe Auth::RegistrationsController do get path expect(response).to redirect_to '/' - expect(Rails.configuration.x).to have_received(:single_user_mode) + expect(Rails.configuration.x.mastodon).to have_received(:single_user_mode) end end context 'when registrations closed and not in single user mode' do before do Setting.registrations_mode = 'none' - allow(Rails.configuration.x).to receive(:single_user_mode).and_return(false) + allow(Rails.configuration.x.mastodon).to receive(:single_user_mode).and_return(false) end it 'redirects to root' do get path expect(response).to redirect_to '/' - expect(Rails.configuration.x).to have_received(:single_user_mode) + expect(Rails.configuration.x.mastodon).to have_received(:single_user_mode) end end end