use Mix.Task
import Ecto.Changeset
alias Pleroma.{Repo, User}
+ alias Mix.Tasks.Pleroma.Common
@shortdoc "Manages Pleroma users"
@moduledoc """
## Generate an invite link.
- mix pleroma.user invite
+ mix pleroma.user invite
## Delete the user's account.
mix pleroma.user toggle_activated NICKNAME
+ ## Unsubscribe local users from user's account and deactivate it
+
+ mix pleroma.user unsubscribe NICKNAME
+
## Create a password reset link.
mix pleroma.user reset_password NICKNAME
- `--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
{options, [], []} =
OptionParser.parse(
proceed? = Mix.shell().yes?("Continue?")
unless not proceed? do
- Mix.Task.run("app.start")
+ Common.start_pleroma()
params =
%{
end
def run(["rm", nickname]) do
- Mix.Task.run("app.start")
+ Common.start_pleroma()
with %User{local: true} = user <- User.get_by_nickname(nickname) do
User.delete(user)
end
def run(["toggle_activated", nickname]) do
- Mix.Task.run("app.start")
+ Common.start_pleroma()
with %User{} = user <- User.get_by_nickname(nickname) do
User.deactivate(user, !user.info["deactivated"])
end
def run(["reset_password", nickname]) do
- Mix.Task.run("app.start")
+ Common.start_pleroma()
with %User{local: true} = user <- User.get_by_nickname(nickname),
{:ok, token} <- Pleroma.PasswordResetToken.create_token(user) do
end
def run(["unsubscribe", nickname]) do
- Mix.Task.run("app.start")
+ Common.start_pleroma()
with %User{} = user <- User.get_by_nickname(nickname) do
Mix.shell().info("Deactivating #{user.nickname}")
end
def run(["set", nickname | rest]) do
- Mix.Task.run("app.start")
+ Common.start_pleroma()
{options, [], []} =
OptionParser.parse(
end
defp set_moderator(user, value) do
- info =
- user.info
- |> Map.put("is_moderator", value)
-
info_cng = User.Info.admin_api_update(user.info, %{is_moderator: value})
user_cng =
end
defp set_admin(user, value) do
- info =
- user.info
- |> Map.put("is_admin", value)
-
info_cng = User.Info.admin_api_update(user.info, %{is_admin: value})
user_cng =
end
defp set_locked(user, value) do
- info =
- user.info
- |> Map.put("locked", value)
-
info_cng = User.Info.user_upgrade(user.info, %{locked: value})
user_cng =
end
def run(["invite"]) do
- Mix.Task.run("app.start")
+ Common.start_pleroma()
with {:ok, token} <- Pleroma.UserInviteToken.create_token() do
Mix.shell().info("Generated user invite token")