aprs.me/lib/mix/tasks/aprsme.user_role.ex
Graham McIntire b0832e5a9c
Some checks failed
Build and Push / Build and Push Docker Image (push) Failing after 2s
refactor: harden packet delivery and operations
2026-07-26 13:11:26 -05:00

31 lines
922 B
Elixir

defmodule Mix.Tasks.Aprsme.UserRole do
@shortdoc "Promotes or demotes an existing user"
@moduledoc """
Sets an existing user's role by email.
mix aprsme.user_role user@example.com admin
mix aprsme.user_role user@example.com user
"""
use Mix.Task
@impl Mix.Task
def run([email, role_name]) when role_name in ["user", "admin"] do
Mix.Task.run("app.start")
case Aprsme.Accounts.get_user_by_email(email) do
nil ->
Mix.raise("No user found with email #{email}")
user ->
role = String.to_existing_atom(role_name)
case Aprsme.Accounts.set_user_role(user, role) do
{:ok, _user} -> Mix.shell().info("Set #{email} role to #{role_name}")
{:error, changeset} -> Mix.raise("Could not update role: #{inspect(changeset.errors)}")
end
end
end
def run(_args), do: Mix.raise("Usage: mix aprsme.user_role EMAIL user|admin")
end