Merge remote-tracking branch 'upstream/develop' into restrict-domain
[akkoma] / lib / pleroma / emails / admin_email.ex
index 59d571c2a6fd69a3eb3bf996efd72dbc65d6aade..8979db2f8269518fa63ceaecfbe61c7dbda0b088 100644 (file)
@@ -1,20 +1,38 @@
 # Pleroma: A lightweight social networking server
-# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
+# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
 # SPDX-License-Identifier: AGPL-3.0-only
 
-defmodule Pleroma.AdminEmail do
+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: Pleroma.Config.get(:instance)
+  defp instance_config, do: Config.get(:instance)
   defp instance_name, do: instance_config()[:name]
-  defp instance_notify_email, do: instance_config()[:notify_email]
+
+  defp instance_notify_email do
+    Keyword.get(instance_config(), :notify_email, instance_config()[:email])
+  end
 
   defp user_url(user) do
-    Helpers.o_status_url(Pleroma.Web.Endpoint, :feed_redirect, user.nickname)
+    Helpers.user_feed_url(Pleroma.Web.Endpoint, :feed_redirect, user.id)
+  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
@@ -26,7 +44,7 @@ defmodule Pleroma.AdminEmail do
       end
 
     statuses_html =
-      if length(statuses) > 0 do
+      if is_list(statuses) && length(statuses) > 0 do
         statuses_list_html =
           statuses
           |> Enum.map(fn
@@ -55,13 +73,28 @@ defmodule Pleroma.AdminEmail do
     <p>Reported Account: <a href="#{user_url(account)}">#{account.nickname}</a></p>
     #{comment_html}
     #{statuses_html}
+    <p>
+    <a href="#{Pleroma.Web.base_url()}/pleroma/admin/#/reports/index">View Reports in AdminFE</a>
     """
 
     new()
     |> to({to.name, to.email})
     |> from({instance_name(), instance_notify_email()})
-    |> reply_to({reporter.name, reporter.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="#{user_url(account)}">@#{account.nickname}</a></p>
+    <blockquote>#{HTML.strip_tags(account.registration_reason)}</blockquote>
+    <a href="#{Pleroma.Web.base_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