Update mix tasks since User.info.info_changeset is deprecated
[akkoma] / lib / mix / tasks / set_admin.ex
1 defmodule Mix.Tasks.SetAdmin do
2 use Mix.Task
3 import Ecto.Changeset
4 alias Pleroma.User
5
6 @doc """
7 Sets admin status
8 Usage: set_admin nickname [true|false]
9 """
10 def run([nickname | rest]) do
11 Application.ensure_all_started(:pleroma)
12
13 admin =
14 case rest do
15 [admin] -> admin == "true"
16 _ -> true
17 end
18
19 with %User{local: true} = user <- User.get_by_nickname(nickname) do
20 info_cng = User.Info.admin_api_update(user.info, %{is_admin: !!admin})
21 user_cng = Ecto.Changeset.change(user)
22 |> put_embed(:info, info_cng)
23 {:ok, user} = User.update_and_set_cache(user_cng)
24
25 IO.puts("Admin status of #{nickname}: #{user.info.is_admin}")
26 else
27 _ ->
28 IO.puts("No local user #{nickname}")
29 end
30 end
31 end