Fix relays UI being available in whitelist/secure mode (#11963)
Fix relays UI referencing relay that is not functional
This commit is contained in:
		
							parent
							
								
									00d7bdcc2a
								
							
						
					
					
						commit
						add4d4118c
					
				
					 4 changed files with 10 additions and 7 deletions
				
			
		| 
						 | 
				
			
			@ -3,6 +3,7 @@
 | 
			
		|||
module Admin
 | 
			
		||||
  class RelaysController < BaseController
 | 
			
		||||
    before_action :set_relay, except: [:index, :new, :create]
 | 
			
		||||
    before_action :require_signatures_enabled!, only: [:new, :create, :enable]
 | 
			
		||||
 | 
			
		||||
    def index
 | 
			
		||||
      authorize :relay, :update?
 | 
			
		||||
| 
						 | 
				
			
			@ -11,7 +12,7 @@ module Admin
 | 
			
		|||
 | 
			
		||||
    def new
 | 
			
		||||
      authorize :relay, :update?
 | 
			
		||||
      @relay = Relay.new(inbox_url: Relay::PRESET_RELAY)
 | 
			
		||||
      @relay = Relay.new
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def create
 | 
			
		||||
| 
						 | 
				
			
			@ -54,5 +55,9 @@ module Admin
 | 
			
		|||
    def resource_params
 | 
			
		||||
      params.require(:relay).permit(:inbox_url)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def require_signatures_enabled!
 | 
			
		||||
      redirect_to admin_relays_path, alert: I18n.t('admin.relays.signatures_not_enabled') if authorized_fetch_mode?
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,8 +12,6 @@
 | 
			
		|||
#
 | 
			
		||||
 | 
			
		||||
class Relay < ApplicationRecord
 | 
			
		||||
  PRESET_RELAY = 'https://relay.joinmastodon.org/inbox'
 | 
			
		||||
 | 
			
		||||
  validates :inbox_url, presence: true, uniqueness: true, url: true, if: :will_save_change_to_inbox_url?
 | 
			
		||||
 | 
			
		||||
  enum state: [:idle, :pending, :accepted, :rejected]
 | 
			
		||||
| 
						 | 
				
			
			@ -74,7 +72,6 @@ class Relay < ApplicationRecord
 | 
			
		|||
  end
 | 
			
		||||
 | 
			
		||||
  def ensure_disabled
 | 
			
		||||
    return unless enabled?
 | 
			
		||||
    disable!
 | 
			
		||||
    disable! if enabled?
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -257,7 +257,7 @@ en:
 | 
			
		|||
      updated_msg: Emoji successfully updated!
 | 
			
		||||
      upload: Upload
 | 
			
		||||
    dashboard:
 | 
			
		||||
      authorized_fetch_mode: Authorized fetch mode
 | 
			
		||||
      authorized_fetch_mode: Secure mode
 | 
			
		||||
      backlog: backlogged jobs
 | 
			
		||||
      config: Configuration
 | 
			
		||||
      feature_deletions: Account deletions
 | 
			
		||||
| 
						 | 
				
			
			@ -383,6 +383,7 @@ en:
 | 
			
		|||
      pending: Waiting for relay's approval
 | 
			
		||||
      save_and_enable: Save and enable
 | 
			
		||||
      setup: Setup a relay connection
 | 
			
		||||
      signatures_not_enabled: Relays will not work correctly while secure mode or whitelist mode is enabled
 | 
			
		||||
      status: Status
 | 
			
		||||
      title: Relays
 | 
			
		||||
    report_notes:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -47,7 +47,7 @@ SimpleNavigation::Configuration.run do |navigation|
 | 
			
		|||
      s.item :dashboard, safe_join([fa_icon('tachometer fw'), t('admin.dashboard.title')]), admin_dashboard_url
 | 
			
		||||
      s.item :settings, safe_join([fa_icon('cogs fw'), t('admin.settings.title')]), edit_admin_settings_url, if: -> { current_user.admin? }, highlights_on: %r{/admin/settings}
 | 
			
		||||
      s.item :custom_emojis, safe_join([fa_icon('smile-o fw'), t('admin.custom_emojis.title')]), admin_custom_emojis_url, highlights_on: %r{/admin/custom_emojis}
 | 
			
		||||
      s.item :relays, safe_join([fa_icon('exchange fw'), t('admin.relays.title')]), admin_relays_url, if: -> { current_user.admin? }, highlights_on: %r{/admin/relays}
 | 
			
		||||
      s.item :relays, safe_join([fa_icon('exchange fw'), t('admin.relays.title')]), admin_relays_url, if: -> { current_user.admin? && !whitelist_mode? }, highlights_on: %r{/admin/relays}
 | 
			
		||||
      s.item :sidekiq, safe_join([fa_icon('diamond fw'), 'Sidekiq']), sidekiq_url, link_html: { target: 'sidekiq' }, if: -> { current_user.admin? }
 | 
			
		||||
      s.item :pghero, safe_join([fa_icon('database fw'), 'PgHero']), pghero_url, link_html: { target: 'pghero' }, if: -> { current_user.admin? }
 | 
			
		||||
    end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Reference in a new issue