[Glitch] Allow non-logged users to access /web
Port 43b5d5e38d
to glitch-soc
Signed-off-by: Claire <claire.github-309c@sitedethib.com>
This commit is contained in:
parent
9ee2746a36
commit
d86cb4cab8
5 changed files with 29 additions and 19 deletions
|
@ -2,10 +2,10 @@
|
||||||
|
|
||||||
class HomeController < ApplicationController
|
class HomeController < ApplicationController
|
||||||
before_action :redirect_unauthenticated_to_permalinks!
|
before_action :redirect_unauthenticated_to_permalinks!
|
||||||
before_action :authenticate_user!
|
|
||||||
|
|
||||||
before_action :set_pack
|
before_action :set_pack
|
||||||
before_action :set_referrer_policy_header
|
before_action :set_referrer_policy_header
|
||||||
|
before_action :set_instance_presenter
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@body_classes = 'app-body'
|
@body_classes = 'app-body'
|
||||||
|
@ -16,7 +16,10 @@ class HomeController < ApplicationController
|
||||||
def redirect_unauthenticated_to_permalinks!
|
def redirect_unauthenticated_to_permalinks!
|
||||||
return if user_signed_in?
|
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
|
end
|
||||||
|
|
||||||
def set_pack
|
def set_pack
|
||||||
|
@ -24,8 +27,10 @@ class HomeController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def default_redirect_path
|
def default_redirect_path
|
||||||
if request.path.start_with?('/web') || whitelist_mode?
|
if whitelist_mode?
|
||||||
new_user_session_path
|
new_user_session_path
|
||||||
|
elsif request.path.start_with?('/web')
|
||||||
|
nil
|
||||||
elsif single_user_mode?
|
elsif single_user_mode?
|
||||||
short_account_path(Account.local.without_suspended.where('id > 0').first)
|
short_account_path(Account.local.without_suspended.where('id > 0').first)
|
||||||
else
|
else
|
||||||
|
@ -36,4 +41,8 @@ class HomeController < ApplicationController
|
||||||
def set_referrer_policy_header
|
def set_referrer_policy_header
|
||||||
response.headers['Referrer-Policy'] = 'origin'
|
response.headers['Referrer-Policy'] = 'origin'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def set_instance_presenter
|
||||||
|
@instance_presenter = InstancePresenter.new
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -17,10 +17,6 @@ class PermalinkRedirector
|
||||||
find_status_url_by_id(path_segments[2])
|
find_status_url_by_id(path_segments[2])
|
||||||
elsif path_segments[1] == 'accounts' && path_segments[2] =~ /\d/
|
elsif path_segments[1] == 'accounts' && path_segments[2] =~ /\d/
|
||||||
find_account_url_by_id(path_segments[2])
|
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
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,10 +1,14 @@
|
||||||
- content_for :header_tags do
|
- content_for :header_tags do
|
||||||
= preload_pack_asset 'features/getting_started.js', crossorigin: 'anonymous'
|
- if user_signed_in?
|
||||||
= preload_pack_asset 'features/compose.js', crossorigin: 'anonymous'
|
= preload_pack_asset 'features/getting_started.js', crossorigin: 'anonymous'
|
||||||
= preload_pack_asset 'features/home_timeline.js', crossorigin: 'anonymous'
|
= preload_pack_asset 'features/compose.js', crossorigin: 'anonymous'
|
||||||
= preload_pack_asset 'features/notifications.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}
|
%meta{name: 'applicationServerKey', content: Rails.configuration.x.vapid_public_key}
|
||||||
|
|
||||||
= render_initial_state
|
= render_initial_state
|
||||||
|
|
||||||
.notranslate.app-holder#mastodon{ data: { props: Oj.dump(default_props) } }
|
.notranslate.app-holder#mastodon{ data: { props: Oj.dump(default_props) } }
|
||||||
|
|
|
@ -8,9 +8,9 @@ RSpec.describe HomeController, type: :controller do
|
||||||
|
|
||||||
context 'when not signed in' do
|
context 'when not signed in' do
|
||||||
context 'when requested path is tag timeline' do
|
context 'when requested path is tag timeline' do
|
||||||
it 'redirects to the tag\'s permalink' do
|
it 'returns http success' do
|
||||||
@request.path = '/web/timelines/tag/name'
|
@request.path = '/web/timelines/tag/name'
|
||||||
is_expected.to redirect_to '/tags/name'
|
is_expected.to have_http_status(:success)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -23,11 +23,12 @@ RSpec.describe HomeController, type: :controller do
|
||||||
context 'when signed in' do
|
context 'when signed in' do
|
||||||
let(:user) { Fabricate(:user) }
|
let(:user) { Fabricate(:user) }
|
||||||
|
|
||||||
before { sign_in(user) }
|
before do
|
||||||
|
sign_in(user)
|
||||||
|
end
|
||||||
|
|
||||||
it 'assigns @body_classes' do
|
it 'returns http success' do
|
||||||
subject
|
is_expected.to have_http_status(:success)
|
||||||
expect(assigns(:body_classes)).to eq 'app-body'
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -21,7 +21,7 @@ describe PermalinkRedirector do
|
||||||
|
|
||||||
it 'returns path for legacy tag links' do
|
it 'returns path for legacy tag links' do
|
||||||
redirector = described_class.new('web/timelines/tag/hoge')
|
redirector = described_class.new('web/timelines/tag/hoge')
|
||||||
expect(redirector.redirect_path).to eq '/tags/hoge'
|
expect(redirector.redirect_path).to be_nil
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'returns path for pretty account links' do
|
it 'returns path for pretty account links' do
|
||||||
|
@ -36,7 +36,7 @@ describe PermalinkRedirector do
|
||||||
|
|
||||||
it 'returns path for pretty tag links' do
|
it 'returns path for pretty tag links' do
|
||||||
redirector = described_class.new('web/tags/hoge')
|
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
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue