When web UI URL used while logged out, redirect to static page (#4954)

This commit is contained in:
Eugen Rochko 2017-09-15 00:57:08 +02:00 committed by GitHub
parent 0d1215e82f
commit 472df24579
2 changed files with 36 additions and 1 deletions

View File

@ -11,7 +11,30 @@ class HomeController < ApplicationController
private
def authenticate_user!
redirect_to(single_user_mode? ? account_path(Account.first) : about_path) unless user_signed_in?
return if user_signed_in?
matches = request.path.match(/\A\/web\/(statuses|accounts)\/([\d]+)\z/)
if matches
case matches[1]
when 'statuses'
status = Status.find_by(id: matches[2])
if status && (status.public_visibility? || status.unlisted_visibility?)
redirect_to(ActivityPub::TagManager.instance.url_for(status))
return
end
when 'accounts'
account = Account.find_by(id: matches[2])
if account
redirect_to(ActivityPub::TagManager.instance.url_for(account))
return
end
end
end
redirect_to(default_redirect_path)
end
def set_initial_state_json
@ -28,4 +51,14 @@ class HomeController < ApplicationController
admin: Account.find_local(Setting.site_contact_username),
}
end
def default_redirect_path
if request.path.start_with?('/web')
new_user_session_path
elsif single_user_mode?
short_account_path(Account.first)
else
about_path
end
end
end

View File

@ -6,6 +6,7 @@ RSpec.describe HomeController, type: :controller do
describe 'GET #index' do
context 'when not signed in' do
it 'redirects to about page' do
@request.path = '/'
get :index
expect(response).to redirect_to(about_path)
end
@ -13,6 +14,7 @@ RSpec.describe HomeController, type: :controller do
context 'when signed in' do
let(:user) { Fabricate(:user) }
subject do
sign_in(user)
get :index