Add sensitive words setting

This commit is contained in:
KMY 2023-07-27 12:47:33 +09:00
parent 0dbc070037
commit cd00d7f533
12 changed files with 128 additions and 1 deletions

View file

@ -0,0 +1,25 @@
# frozen_string_literal: true
class Admin::SensitiveWord
class << self
def sensitive?(text, spoiler_text)
exposure_text = (spoiler_text.presence || text)
(spoiler_text.blank? && sensitive_words.any? { |word| text.include?(word) }) ||
sensitive_words_for_full.any? { |word| exposure_text.include?(word) }
end
def modified_text(text, spoiler_text)
spoiler_text.present? ? "#{spoiler_text}\n\n#{text}" : text
end
private
def sensitive_words
Setting.sensitive_words || []
end
def sensitive_words_for_full
Setting.sensitive_words_for_full || []
end
end
end

View file

@ -38,6 +38,8 @@ class Form::AdminSettings
enable_block_emoji_reaction_settings
hide_local_users_for_anonymous
post_hash_tags_max
sensitive_words
sensitive_words_for_full
).freeze
INTEGER_KEYS = %i(
@ -70,6 +72,8 @@ class Form::AdminSettings
STRING_ARRAY_KEYS = %i(
ng_words
sensitive_words
sensitive_words_for_full
).freeze
attr_accessor(*KEYS)

View file

@ -36,6 +36,7 @@ class UserRole < ApplicationRecord
manage_roles: (1 << 17),
manage_user_access: (1 << 18),
delete_user_data: (1 << 19),
manage_sensitive_words: (1 << 29),
manage_ng_words: (1 << 30),
}.freeze
@ -63,6 +64,7 @@ class UserRole < ApplicationRecord
manage_taxonomies
manage_invites
manage_ng_words
manage_sensitive_words
).freeze,
administration: %w(