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, | ||||
|       comment: report_params[:comment] | ||||
|     ) | ||||
| 
 | ||||
|     User.admins.includes(:account).each { |u| AdminMailer.new_report(u.account, @report).deliver_later } | ||||
| 
 | ||||
|     render :show | ||||
|   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' } | ||||
|   layout 'mailer' | ||||
|   helper :instance | ||||
| 
 | ||||
|   protected | ||||
| 
 | ||||
|   def locale_for_account(account) | ||||
|     I18n.with_locale(account.user_locale || I18n.default_locale) do | ||||
|       yield | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  |  | |||
|  | @ -67,12 +67,4 @@ class NotificationMailer < ApplicationMailer | |||
|            ) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   private | ||||
| 
 | ||||
|   def locale_for_account(account) | ||||
|     I18n.with_locale(account.user_locale || I18n.default_locale) do | ||||
|       yield | ||||
|     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 | ||||
|       topic: Topic | ||||
|     title: Administration | ||||
|   admin_mailer: | ||||
|     new_report: | ||||
|       body: "%{reporter} has reported %{target}" | ||||
|       subject: New report for %{instance} (#%{id}) | ||||
|   application_mailer: | ||||
|     settings: 'Change e-mail preferences: %{link}' | ||||
|     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:' | ||||
|     recovery_codes: Backup recovery codes | ||||
|     recovery_codes_regenerated: Recovery codes successfully regenerated | ||||
|     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. | ||||
|     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. | ||||
|     setup: Set up | ||||
|     wrong_code: The entered code was invalid! Are server time and device time correct? | ||||
|   users: | ||||
|  |  | |||
|  | @ -21,12 +21,21 @@ RSpec.describe Api::V1::ReportsController, type: :controller do | |||
|   end | ||||
| 
 | ||||
|   describe 'POST #create' do | ||||
|     it 'creates a report' do | ||||
|       status = Fabricate(:status) | ||||
|       post :create, params: { status_ids: [status.id], account_id: status.account.id, comment: 'reasons' } | ||||
|     let!(:status) { Fabricate(:status) } | ||||
|     let!(:admin)  { Fabricate(:user, admin: true) } | ||||
| 
 | ||||
|     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(response).to have_http_status(:success) | ||||
|     end | ||||
| 
 | ||||
|     it 'sends e-mails to admins' do | ||||
|       expect(AdminMailer).to have_received(:new_report).with(admin.account, Report) | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue