diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/settings/profiles_controller.rb | 2 | ||||
-rw-r--r-- | app/controllers/statuses_controller.rb | 2 | ||||
-rw-r--r-- | app/models/account.rb | 23 | ||||
-rw-r--r-- | app/views/settings/profiles/show.html.haml | 1 |
4 files changed, 27 insertions, 1 deletions
diff --git a/app/controllers/settings/profiles_controller.rb b/app/controllers/settings/profiles_controller.rb index aa593a016..afd525cc0 100644 --- a/app/controllers/settings/profiles_controller.rb +++ b/app/controllers/settings/profiles_controller.rb @@ -25,7 +25,7 @@ class Settings::ProfilesController < Settings::BaseController private def account_params - params.require(:account).permit(:display_name, :note, :avatar, :header, :replies, :locked, :hidden, :unlisted, :gently, :kobold, :adult_content, :bot, :discoverable, fields_attributes: [:name, :value]) + params.require(:account).permit(:display_name, :note, :avatar, :header, :replies, :locked, :hidden, :unlisted, :block_anon, :gently, :kobold, :adult_content, :bot, :discoverable, fields_attributes: [:name, :value]) end def set_account diff --git a/app/controllers/statuses_controller.rb b/app/controllers/statuses_controller.rb index bb6f0fd8c..d082d514d 100644 --- a/app/controllers/statuses_controller.rb +++ b/app/controllers/statuses_controller.rb @@ -201,6 +201,8 @@ class StatusesController < ApplicationController if @status.sharekey.present? && @sharekey == @status.sharekey skip_authorization + elsif @account.block_anon && !user_signed_in? + raise ActiveRecord::RecordNotFound else authorize @status, :show? end diff --git a/app/models/account.rb b/app/models/account.rb index 97b0e93e4..e09690893 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -52,6 +52,9 @@ # kobold :boolean default(FALSE), not null # froze :boolean # known :boolean default(FALSE), not null +# force_private :boolean default(FALSE), not null +# unboostable :boolean default(FALSE), not null +# block_anon :boolean default(FALSE), not null # class Account < ApplicationRecord @@ -229,6 +232,14 @@ class Account < ApplicationRecord end end + def force_private! + transaction do + update!(force_private: true) + scope = Status.where(account_id: id) + scope.where.not(visibility: [:direct, :limited, :private]).in_batches.update_all(visibility: :private) + end + end + def force_sensitive! transaction do update!(force_sensitive: true) @@ -236,10 +247,22 @@ class Account < ApplicationRecord end end + def unboostable! + update!(unboostable: true) + end + + def boostable! + update!(unboostable: false) + end + def allow_public! update!(force_unlisted: false) end + def allow_nonprivate! + update!(force_private: false) + end + def allow_nonsensitive! update!(force_sensitive: false) end diff --git a/app/views/settings/profiles/show.html.haml b/app/views/settings/profiles/show.html.haml index 9a68e82e9..4fabfb9f4 100644 --- a/app/views/settings/profiles/show.html.haml +++ b/app/views/settings/profiles/show.html.haml @@ -25,6 +25,7 @@ = f.input :hidden, as: :boolean, wrapper: :with_label = f.input :unlisted, as: :boolean, wrapper: :with_label, hint: t('simple_form.hints.defaults.unlisted') = f.input :replies, as: :boolean, wrapper: :with_label + = f.input :block_anon, as: :boolean, wrapper: :with_label, hint: t('simple_form.hints.defaults.block_anon') .fields-group = f.input :adult_content, as: :boolean, wrapper: :with_label |