Packages
legendary_core
8.3.5
8.12.0
8.11.1
8.11.0
8.10.0
8.9.2
8.9.1
8.5.3
8.5.2
8.5.1
8.5.0
8.4.0
8.3.6
8.3.5
8.3.4
8.3.3
8.3.2
8.3.1
8.3.0
8.2.7
8.2.5
8.2.4
8.2.3
8.2.2
8.2.1
8.2.0
8.1.1
8.1.0
8.0.1
8.0.0
7.17.12
7.17.8
7.17.7
7.17.6
7.17.5
7.17.4
7.17.3
7.17.2
7.17.1
7.17.0
7.16.12
7.16.11
4.5.4
4.0.0
2.12.0
2.11.5
2.6.0
2.4.1
2.4.0
2.3.7
2.1.2
A PETAL-stack batteries-included boilerplate for making Phoenix apps without tedium.
Current section
Files
Jump to
Current section
Files
lib/mix/tasks/create_admin.ex
defmodule Mix.Tasks.Legendary.CreateAdmin do
@moduledoc """
Mix task to create an admin user from the command line.
"""
use Mix.Task
alias Legendary.Auth.User
alias Legendary.Core.Repo
alias Ecto.Changeset
@shortdoc "Create an admin user."
@requirements ["app.config", "app.start"]
def run(args) do
{switches, _, _} = OptionParser.parse(args, strict: [email: :string, password: :string])
email = Keyword.get_lazy(switches, :email, fn -> ExPrompt.string_required("Email: ") end)
password = Keyword.get_lazy(switches, :password, fn -> ExPrompt.password("Password: ") end)
params = %{
email: email,
password: password,
roles: ["admin"]
}
%User{}
|> User.changeset(params)
|> maybe_confirm_email()
|> Repo.insert!()
end
defp maybe_confirm_email(changeset) do
field_list = User.__schema__(:fields)
case Enum.any?(field_list, &(&1 == :email_confirmed_at)) do
true ->
changeset
|> Changeset.cast(%{email_confirmed_at: DateTime.utc_now()}, [:email_confirmed_at])
false ->
changeset
end
end
end