When web UI URL used while logged out, redirect to static page (#4954)
This commit is contained in:
		| @@ -11,7 +11,30 @@ class HomeController < ApplicationController | |||||||
|   private |   private | ||||||
|  |  | ||||||
|   def authenticate_user! |   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 |   end | ||||||
|  |  | ||||||
|   def set_initial_state_json |   def set_initial_state_json | ||||||
| @@ -28,4 +51,14 @@ class HomeController < ApplicationController | |||||||
|       admin: Account.find_local(Setting.site_contact_username), |       admin: Account.find_local(Setting.site_contact_username), | ||||||
|     } |     } | ||||||
|   end |   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 | end | ||||||
|   | |||||||
| @@ -6,6 +6,7 @@ RSpec.describe HomeController, type: :controller do | |||||||
|   describe 'GET #index' do |   describe 'GET #index' do | ||||||
|     context 'when not signed in' do |     context 'when not signed in' do | ||||||
|       it 'redirects to about page' do |       it 'redirects to about page' do | ||||||
|  |         @request.path = '/' | ||||||
|         get :index |         get :index | ||||||
|         expect(response).to redirect_to(about_path) |         expect(response).to redirect_to(about_path) | ||||||
|       end |       end | ||||||
| @@ -13,6 +14,7 @@ RSpec.describe HomeController, type: :controller do | |||||||
|  |  | ||||||
|     context 'when signed in' do |     context 'when signed in' do | ||||||
|       let(:user) { Fabricate(:user) } |       let(:user) { Fabricate(:user) } | ||||||
|  |  | ||||||
|       subject do |       subject do | ||||||
|         sign_in(user) |         sign_in(user) | ||||||
|         get :index |         get :index | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user