aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/emails/admin_email.ex
diff options
context:
space:
mode:
authordcc <dcc@logografos.com>2023-09-02 00:52:52 -0700
committerdcc <dcc@logografos.com>2023-09-02 00:52:52 -0700
commit3a4773c3c2bd0bbef244eb519b07208da9108e49 (patch)
tree973567a6f3abb37bfb0f785b1cad14ed55840ef5 /lib/pleroma/emails/admin_email.ex
downloadanni-3a4773c3c2bd0bbef244eb519b07208da9108e49.tar.gz
anni-3a4773c3c2bd0bbef244eb519b07208da9108e49.tar.bz2
anni-3a4773c3c2bd0bbef244eb519b07208da9108e49.zip
First
Diffstat (limited to 'lib/pleroma/emails/admin_email.ex')
-rw-r--r--lib/pleroma/emails/admin_email.ex99
1 files changed, 99 insertions, 0 deletions
diff --git a/lib/pleroma/emails/admin_email.ex b/lib/pleroma/emails/admin_email.ex
new file mode 100644
index 0000000..372e552
--- /dev/null
+++ b/lib/pleroma/emails/admin_email.ex
@@ -0,0 +1,99 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Emails.AdminEmail do
+ @moduledoc "Admin emails"
+
+ import Swoosh.Email
+
+ alias Pleroma.Config
+ alias Pleroma.HTML
+ alias Pleroma.Web.Router.Helpers
+
+ defp instance_config, do: Config.get(:instance)
+ defp instance_name, do: instance_config()[:name]
+
+ defp instance_notify_email do
+ Keyword.get(instance_config(), :notify_email, instance_config()[:email])
+ end
+
+ def test_email(mail_to \\ nil) do
+ html_body = """
+ <h3>Instance Test Email</h3>
+ <p>A test email was requested. Hello. :)</p>
+ """
+
+ new()
+ |> to(mail_to || Config.get([:instance, :email]))
+ |> from({instance_name(), instance_notify_email()})
+ |> subject("Instance Test Email")
+ |> html_body(html_body)
+ end
+
+ def report(to, reporter, account, statuses, comment) do
+ comment_html =
+ if comment do
+ "<p>Comment: #{comment}"
+ else
+ ""
+ end
+
+ statuses_html =
+ if is_list(statuses) && length(statuses) > 0 do
+ statuses_list_html =
+ statuses
+ |> Enum.map(fn
+ %{id: id} ->
+ status_url = Helpers.o_status_url(Pleroma.Web.Endpoint, :notice, id)
+ "<li><a href=\"#{status_url}\">#{status_url}</li>"
+
+ %{"id" => id} when is_binary(id) ->
+ "<li><a href=\"#{id}\">#{id}</li>"
+
+ id when is_binary(id) ->
+ "<li><a href=\"#{id}\">#{id}</li>"
+ end)
+ |> Enum.join("\n")
+
+ """
+ <p> Statuses:
+ <ul>
+ #{statuses_list_html}
+ </ul>
+ </p>
+ """
+ else
+ ""
+ end
+
+ html_body = """
+ <p>Reported by: <a href="#{reporter.ap_id}">#{reporter.nickname}</a></p>
+ <p>Reported Account: <a href="#{account.ap_id}">#{account.nickname}</a></p>
+ #{comment_html}
+ #{statuses_html}
+ <p>
+ <a href="#{Pleroma.Web.Endpoint.url()}/pleroma/admin/#/reports/index">View Reports in AdminFE</a>
+ """
+
+ new()
+ |> to({to.name, to.email})
+ |> from({instance_name(), instance_notify_email()})
+ |> subject("#{instance_name()} Report")
+ |> html_body(html_body)
+ end
+
+ def new_unapproved_registration(to, account) do
+ html_body = """
+ <p>New account for review: <a href="#{account.ap_id}">@#{account.nickname}</a></p>
+ <blockquote>#{HTML.strip_tags(account.registration_reason)}</blockquote>
+ <a href="#{Pleroma.Web.Endpoint.url()}/pleroma/admin/#/users/#{account.id}/">Visit AdminFE</a>
+ """
+
+ new()
+ |> to({to.name, to.email})
+ |> from({instance_name(), instance_notify_email()})
+ |> subject("New account up for review on #{instance_name()} (@#{account.nickname})")
+ |> html_body(html_body)
+ end
+end