Skip to content

Commit 60bdee7

Browse files
Gargronhiyuki2578
authored andcommitted
Fix relays UI being available in whitelist/secure mode (mastodon#11963)
Fix relays UI referencing relay that is not functional
1 parent 178e885 commit 60bdee7

4 files changed

Lines changed: 10 additions & 7 deletions

File tree

app/controllers/admin/relays_controller.rb

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
module Admin
44
class RelaysController < BaseController
55
before_action :set_relay, except: [:index, :new, :create]
6+
before_action :require_signatures_enabled!, only: [:new, :create, :enable]
67

78
def index
89
authorize :relay, :update?
@@ -11,7 +12,7 @@ def index
1112

1213
def new
1314
authorize :relay, :update?
14-
@relay = Relay.new(inbox_url: Relay::PRESET_RELAY)
15+
@relay = Relay.new
1516
end
1617

1718
def create
@@ -54,5 +55,9 @@ def set_relay
5455
def resource_params
5556
params.require(:relay).permit(:inbox_url)
5657
end
58+
59+
def require_signatures_enabled!
60+
redirect_to admin_relays_path, alert: I18n.t('admin.relays.signatures_not_enabled') if authorized_fetch_mode?
61+
end
5762
end
5863
end

app/models/relay.rb

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@
1212
#
1313

1414
class Relay < ApplicationRecord
15-
PRESET_RELAY = 'https://relay.joinmastodon.org/inbox'
16-
1715
validates :inbox_url, presence: true, uniqueness: true, url: true, if: :will_save_change_to_inbox_url?
1816

1917
enum state: [:idle, :pending, :accepted, :rejected]
@@ -74,7 +72,6 @@ def some_local_account
7472
end
7573

7674
def ensure_disabled
77-
return unless enabled?
78-
disable!
75+
disable! if enabled?
7976
end
8077
end

config/locales/en.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ en:
258258
updated_msg: Emoji successfully updated!
259259
upload: Upload
260260
dashboard:
261-
authorized_fetch_mode: Authorized fetch mode
261+
authorized_fetch_mode: Secure mode
262262
backlog: backlogged jobs
263263
config: Configuration
264264
feature_deletions: Account deletions
@@ -384,6 +384,7 @@ en:
384384
pending: Waiting for relay's approval
385385
save_and_enable: Save and enable
386386
setup: Setup a relay connection
387+
signatures_not_enabled: Relays will not work correctly while secure mode or whitelist mode is enabled
387388
status: Status
388389
title: Relays
389390
report_notes:

config/navigation.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
s.item :dashboard, safe_join([fa_icon('tachometer fw'), t('admin.dashboard.title')]), admin_dashboard_url
4848
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}
4949
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}
50-
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}
50+
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}
5151
s.item :sidekiq, safe_join([fa_icon('diamond fw'), 'Sidekiq']), sidekiq_url, link_html: { target: 'sidekiq' }, if: -> { current_user.admin? }
5252
s.item :pghero, safe_join([fa_icon('database fw'), 'PgHero']), pghero_url, link_html: { target: 'pghero' }, if: -> { current_user.admin? }
5353
end

0 commit comments

Comments
 (0)