Add user reactivation task.
authorscarlett <nia@netbsd.org>
Mon, 29 Oct 2018 23:08:56 +0000 (23:08 +0000)
committerscarlett <nia@netbsd.org>
Mon, 29 Oct 2018 23:13:15 +0000 (23:13 +0000)
lib/mix/tasks/deactivate_user.ex
lib/mix/tasks/reactivate_user.ex [new file with mode: 0644]
lib/pleroma/user.ex
lib/pleroma/web/activity_pub/activity_pub.ex
test/user_test.exs

index 96b3db6e4110c4662d86df105fde89dae53690f5..f185417870850826903cd24197988111901d4352 100644 (file)
@@ -2,7 +2,7 @@ defmodule Mix.Tasks.DeactivateUser do
   use Mix.Task
   alias Pleroma.User
 
-  @shortdoc "Toggle deactivation status for a user"
+  @shortdoc "Deactivate a user"
   def run([nickname]) do
     Mix.Task.run("app.start")
 
diff --git a/lib/mix/tasks/reactivate_user.ex b/lib/mix/tasks/reactivate_user.ex
new file mode 100644 (file)
index 0000000..40bd068
--- /dev/null
@@ -0,0 +1,13 @@
+defmodule Mix.Tasks.ReactivateUser do
+  use Mix.Task
+  alias Pleroma.User
+
+  @shortdoc "Reactivate a user"
+  def run([nickname]) do
+    Mix.Task.run("app.start")
+
+    with user <- User.get_by_nickname(nickname) do
+      User.deactivate(user, false)
+    end
+  end
+end
index 0c9fa559a21944c3bf29aa98d6aa7fce2296a8c5..bb5b91c6136c2440e3fb2bf8e393a472fb411e20 100644 (file)
@@ -622,8 +622,8 @@ defmodule Pleroma.User do
     )
   end
 
-  def deactivate(%User{} = user) do
-    new_info = Map.put(user.info, "deactivated", true)
+  def deactivate(%User{} = user, status \\ true) do
+    new_info = Map.put(user.info, "deactivated", status)
     cs = User.info_changeset(user, %{info: new_info})
     update_and_set_cache(cs)
   end
index 537b99f31dbc96a818d75b21e583661c30f45072..5a81f6fa2b2bb7c64643dae028e7955801e7d109 100644 (file)
@@ -44,7 +44,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
   defp check_actor_is_active(actor) do
     if not is_nil(actor) do
       with user <- User.get_cached_by_ap_id(actor),
-           nil <- user.info["deactivated"] do
+           false <- !!user.info["deactivated"] do
         :ok
       else
         _e -> :reject
index 248c26a3ddc9abc171c923f8722dbd9547434df1..05da24f8d22e534ce5781a25f74d65c6d3c349f9 100644 (file)
@@ -487,11 +487,13 @@ defmodule Pleroma.UserTest do
     assert addressed in recipients
   end
 
-  test ".deactivate deactivates a user" do
+  test ".deactivate can de-activate then re-activate a user" do
     user = insert(:user)
     assert false == !!user.info["deactivated"]
     {:ok, user} = User.deactivate(user)
     assert true == user.info["deactivated"]
+    {:ok, user} = User.deactivate(user, false)
+    assert false == !!user.info["deactivated"]
   end
 
   test ".delete deactivates a user, all follow relationships and all create activities" do