From 141554c21cde5c8c67cf8fe1e91a7532012c35e3 Mon Sep 17 00:00:00 2001 From: Mike Dalessio Date: Fri, 20 Jun 2025 16:02:16 -0400 Subject: [PATCH] Make sure the beta env keeps local authentication (for now) and more importantly, don't try to connect to the 37id database, which will hang. And finally, set the connect_timeout to something small so if we do try to make a connection, it will fail quickly instead of hanging for the default 120 seconds. --- app/controllers/signup/base_controller.rb | 5 +++++ app/models/account/signal_account.rb | 6 ++++-- app/models/user/signal_user.rb | 4 +++- config/deploy.beta.yml | 1 + config/initializers/signal_id.rb | 10 +++++++++- 5 files changed, 22 insertions(+), 4 deletions(-) diff --git a/app/controllers/signup/base_controller.rb b/app/controllers/signup/base_controller.rb index ad11d6e1d..322cf2549 100644 --- a/app/controllers/signup/base_controller.rb +++ b/app/controllers/signup/base_controller.rb @@ -1,5 +1,6 @@ class Signup::BaseController < ApplicationController require_untenanted_access + before_action :redirect_if_local_auth http_basic_authenticate_with( name: Rails.application.credentials.dig(:account_signup_http_basic_auth, :name), @@ -32,4 +33,8 @@ class Signup::BaseController < ApplicationController redirect_to account.signal_account.owner.remote_login_url(proceed_to: root_path), allow_other_host: true end + + def redirect_if_local_auth + render plain: "Unauthorized", status: :unauthorized if Rails.application.config.x.local_authentication + end end diff --git a/app/models/account/signal_account.rb b/app/models/account/signal_account.rb index 861626909..610a4ed9c 100644 --- a/app/models/account/signal_account.rb +++ b/app/models/account/signal_account.rb @@ -2,8 +2,10 @@ module Account::SignalAccount extend ActiveSupport::Concern included do - # TODO: remove the "optional: true" once we've populated the accounts properly - belongs_to :signal_account, class_name: "SignalId::Account", primary_key: :queenbee_id, foreign_key: :queenbee_id, optional: true + unless Rails.application.config.x.local_authentication + # TODO: remove the "optional: true" once we've populated the accounts properly + belongs_to :signal_account, class_name: "SignalId::Account", primary_key: :queenbee_id, foreign_key: :queenbee_id, optional: true + end end class_methods do diff --git a/app/models/user/signal_user.rb b/app/models/user/signal_user.rb index 16bee49bc..924cfe87d 100644 --- a/app/models/user/signal_user.rb +++ b/app/models/user/signal_user.rb @@ -2,6 +2,8 @@ module User::SignalUser extend ActiveSupport::Concern included do - belongs_to :signal_user, dependent: :destroy, class_name: "SignalId::User", optional: true + unless Rails.application.config.x.local_authentication + belongs_to :signal_user, dependent: :destroy, class_name: "SignalId::User", optional: true + end end end diff --git a/config/deploy.beta.yml b/config/deploy.beta.yml index 9f384148b..d75d07a28 100644 --- a/config/deploy.beta.yml +++ b/config/deploy.beta.yml @@ -13,6 +13,7 @@ proxy: env: clear: RAILS_ENV: beta + LOCAL_AUTHENTICATION: t x-beamer-accessory: &beamer-accessory image: basecamp/beamer diff --git a/config/initializers/signal_id.rb b/config/initializers/signal_id.rb index c8804fda5..afb6ff60c 100644 --- a/config/initializers/signal_id.rb +++ b/config/initializers/signal_id.rb @@ -1,11 +1,19 @@ require "signal_id" +Rails.application.config.x.local_authentication = ENV["LOCAL_AUTHENTICATION"].present? + ENV["SIGNAL_ID_SECRET"] = Rails.application.credentials.signal_id_secret Rails.application.config.to_prepare do SignalId.product = "fizzy" - SignalId::Database.load_configuration SignalId::Database.default_configuration + db_config = SignalId::Database.default_configuration + if Rails.application.config.x.local_authentication + db_config.each do |name, config| + config["connect_timeout"] = 1 + end + end + SignalId::Database.load_configuration db_config SignalId::Database.enable_rw_splitting! silence_warnings do