X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Fmix%2Ftasks%2Fpleroma%2Fuser.ex;h=40d9208660688521ef08679bd7a28aa715907a34;hb=a8ef6b1190aff949140e0c79603d833668647a31;hp=c20fecaa1a1a5a43803c4f1d4b5fdf8d5b94107e;hpb=fe2759bc9f2dad044b49f4954693ac09f9368041;p=akkoma diff --git a/lib/mix/tasks/pleroma/user.ex b/lib/mix/tasks/pleroma/user.ex index c20fecaa1..40d920866 100644 --- a/lib/mix/tasks/pleroma/user.ex +++ b/lib/mix/tasks/pleroma/user.ex @@ -15,6 +15,7 @@ defmodule Mix.Tasks.Pleroma.User do - `--bio BIO` - the user's bio - `--password PASSWORD` - the user's password - `--moderator`/`--no-moderator` - whether the user is a moderator + - `--admin`/`--no-admin` - whether the user is an admin ## Delete the user's account. @@ -35,6 +36,7 @@ defmodule Mix.Tasks.Pleroma.User do Options: - `--locked`/`--no-locked` - whether the user's account is locked - `--moderator`/`--no-moderator` - whether the user is a moderator + - `--admin`/`--no-admin` - whether the user is an admin """ def run(["new", nickname, email | rest]) do @@ -45,7 +47,8 @@ defmodule Mix.Tasks.Pleroma.User do name: :string, bio: :string, password: :string, - moderator: :boolean + moderator: :boolean, + admin: :boolean ] ) @@ -62,6 +65,7 @@ defmodule Mix.Tasks.Pleroma.User do end moderator? = Keyword.get(options, :moderator, false) + admin? = Keyword.get(options, :admin, false) Mix.shell().info(""" A user will be created with the following information: @@ -73,6 +77,7 @@ defmodule Mix.Tasks.Pleroma.User do - name: #{name} - bio: #{bio} - moderator: #{if(moderator?, do: "true", else: "false")} + - admin: #{if(admin?, do: "true", else: "false")} """) proceed? = Mix.shell().yes?("Continue?") @@ -100,9 +105,14 @@ defmodule Mix.Tasks.Pleroma.User do run(["set", nickname, "--moderator"]) end + if admin? do + run(["set", nickname, "--admin"]) + end + if generated_password? do run(["reset_password", nickname]) end + else Mix.shell().info("User will not be created.") end @@ -113,16 +123,22 @@ defmodule Mix.Tasks.Pleroma.User do with %User{local: true} = user <- User.get_by_nickname(nickname) do User.delete(user) + Mix.shell().info("User #{nickname} deleted.") + else + _ -> + Mix.shell().error("No local user #{nickname}") end - - Mix.shell().info("User #{nickname} deleted.") end def run(["toggle_activated", nickname]) do Mix.Task.run("app.start") - with user <- User.get_by_nickname(nickname) do - User.deactivate(user) + with %User{local: true} = user <- User.get_by_nickname(nickname) do + User.deactivate(user, !user.info["deactivated"]) + Mix.shell().info("Activation status of #{nickname}: #{user.info["deactivated"]}") + else + _ -> + Mix.shell().error("No local user #{nickname}") end end @@ -154,6 +170,7 @@ defmodule Mix.Tasks.Pleroma.User do rest, strict: [ moderator: :boolean, + admin: :boolean, locked: :boolean ] ) @@ -167,6 +184,11 @@ defmodule Mix.Tasks.Pleroma.User do nil -> nil value -> set_locked(nickname, value) end + + case Keyword.get(options, :admin) do + nil -> nil + value -> set_admin(nickname, value) + end end defp set_moderator(nickname, value) do @@ -187,6 +209,24 @@ defmodule Mix.Tasks.Pleroma.User do end end + defp set_admin(nickname, value) do + Application.ensure_all_started(:pleroma) + + with %User{local: true} = user <- User.get_by_nickname(nickname) do + info = + user.info + |> Map.put("is_admin", value) + + cng = User.info_changeset(user, %{info: info}) + {:ok, user} = User.update_and_set_cache(cng) + + Mix.shell().info("Admin status of #{nickname}: #{user.info["is_admin"]}") + else + _ -> + Mix.shell().error("No local user #{nickname}") + end + end + defp set_locked(nickname, value) do Mix.Ecto.ensure_started(Repo, [])