mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-21 21:46:21 +00:00
feat: notificar moderadores #17549
This commit is contained in:
parent
f307803df6
commit
ffecb7129a
9 changed files with 90 additions and 3 deletions
23
app/mailers/activity_pub/actor_flagged_mailer.rb
Normal file
23
app/mailers/activity_pub/actor_flagged_mailer.rb
Normal file
|
@ -0,0 +1,23 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class ActivityPub
|
||||
# Notifica a les moderadores cuando un sitio fue reportado.
|
||||
class ActorFlaggedMailer < ::ApplicationMailer
|
||||
# Envía correo a cada moderadore en su idioma
|
||||
#
|
||||
# @param :site_id [String,Integer]
|
||||
# @param :site_name [String]
|
||||
# @param :content [String]
|
||||
def notify_moderators
|
||||
Usuarie.moderators.pluck(:lang, :email).group_by(&:first).transform_values do |value|
|
||||
value.last
|
||||
end.each_pair do |lang, emails|
|
||||
I18n.with_locale(lang) do
|
||||
emails.each do |email|
|
||||
mail to: email, subject: I18n.t('activity_pub.actor_flagged_mailer.notify_moderators.subject')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -2,6 +2,16 @@
|
|||
|
||||
class ActivityPub
|
||||
class Activity
|
||||
class Flag < ActivityPub::Activity; end
|
||||
class Flag < ActivityPub::Activity
|
||||
# Notifica a todes les moderadores
|
||||
def update_activity_pub_state!
|
||||
ActivityPub::ActorFlaggedMailer.with(
|
||||
content: content['content'],
|
||||
object: content['object'],
|
||||
actor: content['actor'],
|
||||
site_id: activity_pub.site_id
|
||||
).notify_moderators.deliver_later
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
11
app/models/concerns/activity_pub/moderator_concern.rb
Normal file
11
app/models/concerns/activity_pub/moderator_concern.rb
Normal file
|
@ -0,0 +1,11 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class ActivityPub
|
||||
module ModeratorConcern
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
included do
|
||||
scope :moderators, ->() { where(moderator: true) }
|
||||
end
|
||||
end
|
||||
end
|
|
@ -3,6 +3,7 @@
|
|||
# Usuarie de la plataforma
|
||||
class Usuarie < ApplicationRecord
|
||||
include Usuarie::Consent
|
||||
include ActivityPub::ModeratorConcern
|
||||
|
||||
devise :invitable, :database_authenticatable,
|
||||
:recoverable, :rememberable, :validatable,
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
= t('.content', site_id: params[:site_id])
|
||||
|
||||
= Terminal::Table.new do |table|
|
||||
- if (actor = params[:actor].presence).present?
|
||||
- table << [ t('.actor') ]
|
||||
- table.add_separator
|
||||
- table << [ actor ]
|
||||
- table.add_separator
|
||||
|
||||
- if (content = sanitize(params[:content])).present?
|
||||
- table << [ word_wrap(content, line_width: 50) ]
|
||||
- table.add_separator
|
||||
|
||||
- if (uris = [params[:object]].flatten).present?
|
||||
- table << [ t('.uris') ]
|
||||
- table.add_separator
|
||||
- uris.each do |uri|
|
||||
- table << [ uri ]
|
|
@ -120,6 +120,13 @@ en:
|
|||
confirm_report: "Send report to the remote instance? This action will also block the account."
|
||||
remote_flags:
|
||||
report_message: "Hi! Someone using Sutty CMS reported this account on your instance. We don't have support for customized report messages yet, but we will soon. You can reach us at %{panel_actor_mention}."
|
||||
activity_pub:
|
||||
actor_flagged_mailer:
|
||||
notify_moderators:
|
||||
subject: "A site has been reported"
|
||||
content: "The site with id %{site_id} has been reported. Please review the report ASAP."
|
||||
actor: "Site"
|
||||
uris: "Reported activities"
|
||||
activity_pubs:
|
||||
action_on_several:
|
||||
success: "Several comments have changed moderation state. You can find them using the filters on the Comments section."
|
||||
|
|
|
@ -119,6 +119,13 @@ es:
|
|||
confirm_report: "¿Enviar el reporte a la instancia remota? Esta acción también bloqueará la cuenta."
|
||||
remote_flags:
|
||||
report_message: "¡Hola! Une usuarie de Sutty CMS reportó esta cuenta en tu instancia. Todavía no tenemos soporte para mensajes personalizados. Podés contactarnos en %{panel_actor_mention}."
|
||||
activity_pub:
|
||||
actor_flagged_mailer:
|
||||
notify_moderators:
|
||||
subject: "Un sitio ha sido reportado"
|
||||
content: "El sitio con id %{site_id} ha sido reportado. Por favor revisa el reporte a la brevedad."
|
||||
actor: "Sitio"
|
||||
uris: "Actividades reportadas"
|
||||
activity_pubs:
|
||||
action_on_several:
|
||||
success: "Se ha modificado el estado de moderación de varios comentarios. Podés encontrarlos usando los filtros en la sección Comentarios."
|
||||
|
|
8
db/migrate/20241113183226_add_moderator_to_usuaries.rb
Normal file
8
db/migrate/20241113183226_add_moderator_to_usuaries.rb
Normal file
|
@ -0,0 +1,8 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# Agrega el campo moderator para saber quiénes son moderadores
|
||||
class AddModeratorToUsuaries < ActiveRecord::Migration[6.1]
|
||||
def change
|
||||
add_column :usuaries, :moderator, :boolean, default: false
|
||||
end
|
||||
end
|
|
@ -1490,7 +1490,8 @@ CREATE TABLE public.usuaries (
|
|||
privacy_policy_accepted_at timestamp without time zone,
|
||||
terms_of_service_accepted_at timestamp without time zone,
|
||||
code_of_conduct_accepted_at timestamp without time zone,
|
||||
available_for_feedback_accepted_at timestamp without time zone
|
||||
available_for_feedback_accepted_at timestamp without time zone,
|
||||
moderator boolean DEFAULT false
|
||||
);
|
||||
|
||||
|
||||
|
@ -2719,6 +2720,7 @@ INSERT INTO "schema_migrations" (version) VALUES
|
|||
('20240316203721'),
|
||||
('20240318183846'),
|
||||
('20240319124212'),
|
||||
('20240319144735');
|
||||
('20240319144735'),
|
||||
('20241113183226');
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue