Handle User.post_register_action/1 in steps
authorAlex Gleason <alex@alexgleason.me>
Sun, 11 Oct 2020 23:52:35 +0000 (18:52 -0500)
committerAlex Gleason <alex@alexgleason.me>
Sun, 11 Oct 2020 23:52:35 +0000 (18:52 -0500)
lib/pleroma/user.ex
lib/pleroma/web/twitter_api/twitter_api_controller.ex

index 09ea8079391b6b8c7c882ee7d19778e58c1bce42..3f40ac9b39ce0265589cf3e6fde9cf9db2d05cbe 100644 (file)
@@ -773,12 +773,37 @@ defmodule Pleroma.User do
   end
 
   def post_register_action(%User{} = user) do
+    instance_config =
+      Config.get(:instance)
+      |> Enum.into(%{})
+
+    do_post_register_action(user, instance_config)
+  end
+
+  defp do_post_register_action(%User{confirmation_pending: true} = user, %{
+         account_activation_required: true
+       }) do
+    with {:ok, _} <- try_send_confirmation_email(user) do
+      {:ok, user}
+    end
+  end
+
+  defp do_post_register_action(%User{approval_pending: true} = user, %{
+         account_approval_required: true
+       }) do
+    # TODO: Send approval explanation email
+    {:ok, user}
+  end
+
+  defp do_post_register_action(
+         %User{approval_pending: false, confirmation_pending: false} = user,
+         _instance_config
+       ) do
     with {:ok, user} <- autofollow_users(user),
          {:ok, user} <- set_cache(user),
          {:ok, _} <- send_welcome_email(user),
          {:ok, _} <- send_welcome_message(user),
-         {:ok, _} <- send_welcome_chat_message(user),
-         {:ok, _} <- try_send_confirmation_email(user) do
+         {:ok, _} <- send_welcome_chat_message(user) do
       {:ok, user}
     end
   end
@@ -1570,6 +1595,7 @@ defmodule Pleroma.User do
   def approve(%User{} = user) do
     change(user, approval_pending: false)
     |> update_and_set_cache()
+    |> post_register_action()
   end
 
   def update_notification_settings(%User{} = user, settings) do
index c2de26b0ba9da42e15cb95c3575beff5ceccc63a..25dad547caf6d27e98388ebb2a6b890caec91d6f 100644 (file)
@@ -34,7 +34,8 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
          {:ok, _} <-
            user
            |> User.confirmation_changeset(need_confirmation: false)
-           |> User.update_and_set_cache() do
+           |> User.update_and_set_cache()
+           |> User.post_register_action() do
       redirect(conn, to: "/")
     end
   end