commit: a38dbd9c8a5de4626f55d1a0dcd19ccb4a7e2c91
parent: f6a8d835d30f61628ca731462ecfe4f6005e6a9e
Author: Akihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp>
Date: Tue, 6 Mar 2018 03:29:36 +0900
Redirect from Web tag timeline to public tag timeline if not signed in (#6633)
This is also implemented in Pawoo:
https://github.com/pixiv/mastodon/commit/ceafdbd1bbf30fe20a2a814df0f8cae429a4e9db
Diffstat:
2 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/app/controllers/home_controller.rb b/app/controllers/home_controller.rb
@@ -34,7 +34,8 @@ class HomeController < ApplicationController
end
end
- redirect_to(default_redirect_path)
+ matches = request.path.match(%r{\A/web/timelines/tag/(?<tag>.+)\z})
+ redirect_to(matches ? tag_path(CGI.unescape(matches[:tag])) : default_redirect_path)
end
def set_initial_state_json
diff --git a/spec/controllers/home_controller_spec.rb b/spec/controllers/home_controller_spec.rb
@@ -4,21 +4,24 @@ RSpec.describe HomeController, type: :controller do
render_views
describe 'GET #index' do
+ subject { get :index }
+
context 'when not signed in' do
+ context 'when requested path is tag timeline' do
+ before { @request.path = '/web/timelines/tag/name' }
+ it { is_expected.to redirect_to '/tags/name' }
+ end
+
it 'redirects to about page' do
@request.path = '/'
- get :index
- expect(response).to redirect_to(about_path)
+ is_expected.to redirect_to(about_path)
end
end
context 'when signed in' do
let(:user) { Fabricate(:user) }
- subject do
- sign_in(user)
- get :index
- end
+ before { sign_in(user) }
it 'assigns @body_classes' do
subject