class HomeController < ApplicationController
before_action :redirect_unauthenticated_to_permalinks!
- before_action :authenticate_user!
before_action :set_pack
before_action :set_referrer_policy_header
+ before_action :set_instance_presenter
def index
@body_classes = 'app-body'
def redirect_unauthenticated_to_permalinks!
return if user_signed_in?
- redirect_to(PermalinkRedirector.new(request.path).redirect_path || default_redirect_path)
+ redirect_path = PermalinkRedirector.new(request.path).redirect_path
+ redirect_path ||= default_redirect_path
+
+ redirect_to(redirect_path) if redirect_path.present?
end
def set_pack
end
def default_redirect_path
- if request.path.start_with?('/web') || whitelist_mode?
+ if whitelist_mode?
new_user_session_path
+ elsif request.path.start_with?('/web')
+ nil
elsif single_user_mode?
short_account_path(Account.local.without_suspended.where('id > 0').first)
else
def set_referrer_policy_header
response.headers['Referrer-Policy'] = 'origin'
end
+
+ def set_instance_presenter
+ @instance_presenter = InstancePresenter.new
+ end
end
find_status_url_by_id(path_segments[2])
elsif path_segments[1] == 'accounts' && path_segments[2] =~ /\d/
find_account_url_by_id(path_segments[2])
- elsif path_segments[1] == 'timelines' && path_segments[2] == 'tag' && path_segments[3].present?
- find_tag_url_by_name(path_segments[3])
- elsif path_segments[1] == 'tags' && path_segments[2].present?
- find_tag_url_by_name(path_segments[2])
end
end
end
- content_for :header_tags do
- = preload_pack_asset 'features/getting_started.js', crossorigin: 'anonymous'
- = preload_pack_asset 'features/compose.js', crossorigin: 'anonymous'
- = preload_pack_asset 'features/home_timeline.js', crossorigin: 'anonymous'
- = preload_pack_asset 'features/notifications.js', crossorigin: 'anonymous'
+ - if user_signed_in?
+ = preload_pack_asset 'features/getting_started.js', crossorigin: 'anonymous'
+ = preload_pack_asset 'features/compose.js', crossorigin: 'anonymous'
+ = preload_pack_asset 'features/home_timeline.js', crossorigin: 'anonymous'
+ = preload_pack_asset 'features/notifications.js', crossorigin: 'anonymous'
+
+ = render partial: 'shared/og'
%meta{name: 'applicationServerKey', content: Rails.configuration.x.vapid_public_key}
+
= render_initial_state
.notranslate.app-holder#mastodon{ data: { props: Oj.dump(default_props) } }
subject { get :index }
context 'when not signed in' do
- it 'returns http success' do
+ context 'when requested path is tag timeline' do
+ it 'returns http success' do
+ @request.path = '/web/timelines/tag/name'
+ is_expected.to have_http_status(:success)
+ end
+ end
+
+ it 'redirects to about page' do
@request.path = '/'
- is_expected.to have_http_status(:success)
+ is_expected.to redirect_to(about_path)
end
end
it 'returns path for legacy tag links' do
redirector = described_class.new('web/timelines/tag/hoge')
- expect(redirector.redirect_path).to eq '/tags/hoge'
+ expect(redirector.redirect_path).to be_nil
end
it 'returns path for pretty account links' do
it 'returns path for pretty tag links' do
redirector = described_class.new('web/tags/hoge')
- expect(redirector.redirect_path).to eq '/tags/hoge'
+ expect(redirector.redirect_path).to be_nil
end
end
end