From 1ddb4abc704476e56ed97826365a32f21df3c78e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 28 Sep 2019 01:33:27 +0200 Subject: port tootsuite#11978 to monsterfork: Fix redirecting non-functional accounts on public pages Fix #11969 --- app/controllers/accounts_controller.rb | 1 + app/controllers/custom_css_controller.rb | 1 + app/controllers/directories_controller.rb | 2 ++ app/controllers/follower_accounts_controller.rb | 3 +++ app/controllers/following_accounts_controller.rb | 3 +++ app/controllers/manifests_controller.rb | 1 + app/controllers/media_controller.rb | 1 + app/controllers/media_proxy_controller.rb | 1 + app/controllers/remote_follow_controller.rb | 2 ++ app/controllers/remote_interaction_controller.rb | 2 ++ app/controllers/statuses_controller.rb | 1 + app/controllers/tags_controller.rb | 2 ++ 12 files changed, 20 insertions(+) diff --git a/app/controllers/accounts_controller.rb b/app/controllers/accounts_controller.rb index 9bd191f3c..3836fbaac 100644 --- a/app/controllers/accounts_controller.rb +++ b/app/controllers/accounts_controller.rb @@ -10,6 +10,7 @@ class AccountsController < ApplicationController before_action :set_body_classes skip_around_action :set_locale, if: -> { request.format == :json } + skip_before_action :require_functional! def show respond_to do |format| diff --git a/app/controllers/custom_css_controller.rb b/app/controllers/custom_css_controller.rb index e3f67bd14..0a667a6a6 100644 --- a/app/controllers/custom_css_controller.rb +++ b/app/controllers/custom_css_controller.rb @@ -2,6 +2,7 @@ class CustomCssController < ApplicationController skip_before_action :store_current_location + skip_before_action :require_functional! before_action :set_cache_headers diff --git a/app/controllers/directories_controller.rb b/app/controllers/directories_controller.rb index 59247a21f..d2b784daa 100644 --- a/app/controllers/directories_controller.rb +++ b/app/controllers/directories_controller.rb @@ -10,6 +10,8 @@ class DirectoriesController < ApplicationController before_action :set_accounts before_action :set_pack + skip_before_action :require_functional! + def index render :index end diff --git a/app/controllers/follower_accounts_controller.rb b/app/controllers/follower_accounts_controller.rb index e2ba9bf00..df46f5f72 100644 --- a/app/controllers/follower_accounts_controller.rb +++ b/app/controllers/follower_accounts_controller.rb @@ -7,6 +7,9 @@ class FollowerAccountsController < ApplicationController before_action :require_signature!, if: -> { request.format == :json && authorized_fetch_mode? } before_action :set_cache_headers + skip_around_action :set_locale, if: -> { request.format == :json } + skip_before_action :require_functional! + def index respond_to do |format| format.html do diff --git a/app/controllers/following_accounts_controller.rb b/app/controllers/following_accounts_controller.rb index 49f1f3218..8cab67ff5 100644 --- a/app/controllers/following_accounts_controller.rb +++ b/app/controllers/following_accounts_controller.rb @@ -7,6 +7,9 @@ class FollowingAccountsController < ApplicationController before_action :require_signature!, if: -> { request.format == :json && authorized_fetch_mode? } before_action :set_cache_headers + skip_around_action :set_locale, if: -> { request.format == :json } + skip_before_action :require_functional! + def index respond_to do |format| format.html do diff --git a/app/controllers/manifests_controller.rb b/app/controllers/manifests_controller.rb index 491cde745..960510f60 100644 --- a/app/controllers/manifests_controller.rb +++ b/app/controllers/manifests_controller.rb @@ -2,6 +2,7 @@ class ManifestsController < ApplicationController skip_before_action :store_current_location + skip_before_action :require_functional! def show expires_in 3.minutes, public: true diff --git a/app/controllers/media_controller.rb b/app/controllers/media_controller.rb index 9dc27c103..abe3cc7f8 100644 --- a/app/controllers/media_controller.rb +++ b/app/controllers/media_controller.rb @@ -4,6 +4,7 @@ class MediaController < ApplicationController include Authorization skip_before_action :store_current_location + skip_before_action :require_functional! before_action :set_media_attachment before_action :verify_permitted_status! diff --git a/app/controllers/media_proxy_controller.rb b/app/controllers/media_proxy_controller.rb index a18979fd0..93e864610 100644 --- a/app/controllers/media_proxy_controller.rb +++ b/app/controllers/media_proxy_controller.rb @@ -4,6 +4,7 @@ class MediaProxyController < ApplicationController include RoutingHelper skip_before_action :store_current_location + skip_before_action :require_functional! def show RedisLock.acquire(lock_options) do |lock| diff --git a/app/controllers/remote_follow_controller.rb b/app/controllers/remote_follow_controller.rb index 08b53a4d8..b5d9045db 100644 --- a/app/controllers/remote_follow_controller.rb +++ b/app/controllers/remote_follow_controller.rb @@ -8,6 +8,8 @@ class RemoteFollowController < ApplicationController before_action :set_pack before_action :set_body_classes + skip_before_action :require_functional! + def new raise Mastodon::NotPermittedError unless user_signed_in? diff --git a/app/controllers/remote_interaction_controller.rb b/app/controllers/remote_interaction_controller.rb index 7ecf95400..9c247b0ce 100644 --- a/app/controllers/remote_interaction_controller.rb +++ b/app/controllers/remote_interaction_controller.rb @@ -9,6 +9,8 @@ class RemoteInteractionController < ApplicationController before_action :set_pack before_action :set_status + skip_before_action :require_functional! + def new raise Mastodon::NotPermittedError unless user_signed_in? diff --git a/app/controllers/statuses_controller.rb b/app/controllers/statuses_controller.rb index f4aabfe91..415bfad28 100644 --- a/app/controllers/statuses_controller.rb +++ b/app/controllers/statuses_controller.rb @@ -21,6 +21,7 @@ class StatusesController < ApplicationController before_action :set_autoplay, only: :embed skip_around_action :set_locale, if: -> { request.format == :json } + skip_before_action :require_functional!, only: [:show, :embed] content_security_policy only: :embed do |p| p.frame_ancestors(false) diff --git a/app/controllers/tags_controller.rb b/app/controllers/tags_controller.rb index a1d03ce56..6af3ebc62 100644 --- a/app/controllers/tags_controller.rb +++ b/app/controllers/tags_controller.rb @@ -12,6 +12,8 @@ class TagsController < ApplicationController before_action :set_body_classes before_action :set_instance_presenter + skip_before_action :require_functional! + def show respond_to do |format| format.html do -- cgit