mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-25 00:46:22 +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 ActivityPub
|
||||||
class Activity
|
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
|
||||||
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
|
# Usuarie de la plataforma
|
||||||
class Usuarie < ApplicationRecord
|
class Usuarie < ApplicationRecord
|
||||||
include Usuarie::Consent
|
include Usuarie::Consent
|
||||||
|
include ActivityPub::ModeratorConcern
|
||||||
|
|
||||||
devise :invitable, :database_authenticatable,
|
devise :invitable, :database_authenticatable,
|
||||||
:recoverable, :rememberable, :validatable,
|
: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."
|
confirm_report: "Send report to the remote instance? This action will also block the account."
|
||||||
remote_flags:
|
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}."
|
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:
|
activity_pubs:
|
||||||
action_on_several:
|
action_on_several:
|
||||||
success: "Several comments have changed moderation state. You can find them using the filters on the Comments section."
|
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."
|
confirm_report: "¿Enviar el reporte a la instancia remota? Esta acción también bloqueará la cuenta."
|
||||||
remote_flags:
|
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}."
|
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:
|
activity_pubs:
|
||||||
action_on_several:
|
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."
|
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,
|
privacy_policy_accepted_at timestamp without time zone,
|
||||||
terms_of_service_accepted_at timestamp without time zone,
|
terms_of_service_accepted_at timestamp without time zone,
|
||||||
code_of_conduct_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'),
|
('20240316203721'),
|
||||||
('20240318183846'),
|
('20240318183846'),
|
||||||
('20240319124212'),
|
('20240319124212'),
|
||||||
('20240319144735');
|
('20240319144735'),
|
||||||
|
('20241113183226');
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue