This commit is contained in:
parent
a91d968cab
commit
42b8220632
7 changed files with 46 additions and 14 deletions
|
@ -17,6 +17,9 @@ class Api::V1::ReportsController < Api::BaseController
|
||||||
status_ids: reported_status_ids,
|
status_ids: reported_status_ids,
|
||||||
comment: report_params[:comment]
|
comment: report_params[:comment]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
User.admins.includes(:account).each { |u| AdminMailer.new_report(u.account, @report).deliver_later }
|
||||||
|
|
||||||
render :show
|
render :show
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
13
app/mailers/admin_mailer.rb
Normal file
13
app/mailers/admin_mailer.rb
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class AdminMailer < ApplicationMailer
|
||||||
|
def new_report(recipient, report)
|
||||||
|
@report = report
|
||||||
|
@me = recipient
|
||||||
|
@instance = Rails.configuration.x.local_domain
|
||||||
|
|
||||||
|
locale_for_account(@me) do
|
||||||
|
mail to: @me.user_email, subject: I18n.t('admin_mailer.new_report.subject', instance: @instance, id: @report.id)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -4,4 +4,12 @@ class ApplicationMailer < ActionMailer::Base
|
||||||
default from: ENV.fetch('SMTP_FROM_ADDRESS') { 'notifications@localhost' }
|
default from: ENV.fetch('SMTP_FROM_ADDRESS') { 'notifications@localhost' }
|
||||||
layout 'mailer'
|
layout 'mailer'
|
||||||
helper :instance
|
helper :instance
|
||||||
|
|
||||||
|
protected
|
||||||
|
|
||||||
|
def locale_for_account(account)
|
||||||
|
I18n.with_locale(account.user_locale || I18n.default_locale) do
|
||||||
|
yield
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -67,12 +67,4 @@ class NotificationMailer < ApplicationMailer
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
|
||||||
|
|
||||||
def locale_for_account(account)
|
|
||||||
I18n.with_locale(account.user_locale || I18n.default_locale) do
|
|
||||||
yield
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
5
app/views/admin_mailer/new_report.text.erb
Normal file
5
app/views/admin_mailer/new_report.text.erb
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
<%= display_name(@me) %>,
|
||||||
|
|
||||||
|
<%= raw t('admin_mailer.new_report.body', target: @report.target_account.acct, reporter: @report.account.acct) %>
|
||||||
|
|
||||||
|
<%= raw t('application_mailer.view')%> <%= admin_report_url(@report) %>
|
|
@ -193,6 +193,10 @@ en:
|
||||||
title: PubSubHubbub
|
title: PubSubHubbub
|
||||||
topic: Topic
|
topic: Topic
|
||||||
title: Administration
|
title: Administration
|
||||||
|
admin_mailer:
|
||||||
|
new_report:
|
||||||
|
body: "%{reporter} has reported %{target}"
|
||||||
|
subject: New report for %{instance} (#%{id})
|
||||||
application_mailer:
|
application_mailer:
|
||||||
settings: 'Change e-mail preferences: %{link}'
|
settings: 'Change e-mail preferences: %{link}'
|
||||||
signature: Mastodon notifications from %{instance}
|
signature: Mastodon notifications from %{instance}
|
||||||
|
@ -399,9 +403,7 @@ en:
|
||||||
manual_instructions: 'If you can''t scan the QR code and need to enter it manually, here is the plain-text secret:'
|
manual_instructions: 'If you can''t scan the QR code and need to enter it manually, here is the plain-text secret:'
|
||||||
recovery_codes: Backup recovery codes
|
recovery_codes: Backup recovery codes
|
||||||
recovery_codes_regenerated: Recovery codes successfully regenerated
|
recovery_codes_regenerated: Recovery codes successfully regenerated
|
||||||
recovery_instructions_html:
|
recovery_instructions_html: If you ever lose access to your phone, you can use one of the recovery codes below to regain access to your account. <strong>Keep the recovery codes safe</strong>. For example, you may print them and store them with other important documents.
|
||||||
If you ever lose access to your phone, you can use one of the recovery codes below to regain access to your account. <strong>Keep the recovery codes safe</strong>.
|
|
||||||
For example, you may print them and store them with other important documents.
|
|
||||||
setup: Set up
|
setup: Set up
|
||||||
wrong_code: The entered code was invalid! Are server time and device time correct?
|
wrong_code: The entered code was invalid! Are server time and device time correct?
|
||||||
users:
|
users:
|
||||||
|
|
|
@ -21,12 +21,21 @@ RSpec.describe Api::V1::ReportsController, type: :controller do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'POST #create' do
|
describe 'POST #create' do
|
||||||
it 'creates a report' do
|
let!(:status) { Fabricate(:status) }
|
||||||
status = Fabricate(:status)
|
let!(:admin) { Fabricate(:user, admin: true) }
|
||||||
post :create, params: { status_ids: [status.id], account_id: status.account.id, comment: 'reasons' }
|
|
||||||
|
|
||||||
|
before do
|
||||||
|
allow(AdminMailer).to receive(:new_report).and_return(double('email', deliver_later: nil))
|
||||||
|
post :create, params: { status_ids: [status.id], account_id: status.account.id, comment: 'reasons' }
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'creates a report' do
|
||||||
expect(status.reload.account.targeted_reports).not_to be_empty
|
expect(status.reload.account.targeted_reports).not_to be_empty
|
||||||
expect(response).to have_http_status(:success)
|
expect(response).to have_http_status(:success)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'sends e-mails to admins' do
|
||||||
|
expect(AdminMailer).to have_received(:new_report).with(admin.account, Report)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue