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")
--- /dev/null
+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
)
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
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
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