logo

mastofe

My custom branche(s) on git.pleroma.social/pleroma/mastofe
commit: 472df245799949631646f90d894486e4dbeaaaf9
parent: 0d1215e82f42cd5a7b7bb992e4423d69acb813ed
Author: Eugen Rochko <eugen@zeonfederated.com>
Date:   Fri, 15 Sep 2017 00:57:08 +0200

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


Diffstat:

Mapp/controllers/home_controller.rb35++++++++++++++++++++++++++++++++++-
Mspec/controllers/home_controller_spec.rb2++
2 files changed, 36 insertions(+), 1 deletion(-)

diff --git a/app/controllers/home_controller.rb b/app/controllers/home_controller.rb @@ -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 diff --git a/spec/controllers/home_controller_spec.rb b/spec/controllers/home_controller_spec.rb @@ -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