Merge branch 'support/oauth_fetch_token' into 'develop'
[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
22 user_cng =
23 Ecto.Changeset.change(user)
24 |> put_embed(:info, info_cng)
25
26 {:ok, user} = User.update_and_set_cache(user_cng)
27
28 IO.puts("Admin status of #{nickname}: #{user.info.is_admin}")
29 else
30 _ ->
31 IO.puts("No local user #{nickname}")
32 end
33 end
34 end