When web UI URL used while logged out, redirect to static page (#4954)
This commit is contained in:
		
							parent
							
								
									0d1215e82f
								
							
						
					
					
						commit
						472df24579
					
				
					 2 changed files with 36 additions and 1 deletions
				
			
		| 
						 | 
					@ -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
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue