legendary-doc-site/apps/core/lib/auth/user.ex

49 lines
1.3 KiB
Elixir
Raw Normal View History

defmodule Auth.User do
2020-07-17 23:30:31 +00:00
@moduledoc """
The baseline user schema module.
"""
use Ecto.Schema
use Pow.Ecto.Schema
use Pow.Extension.Ecto.Schema,
extensions: [PowResetPassword, PowEmailConfirmation]
import Pow.Ecto.Schema.Changeset, only: [new_password_changeset: 3]
alias Ecto.Changeset
schema "users" do
field :roles, {:array, :string}
field :display_name, :string
field :homepage_url, :string
2020-07-17 23:30:31 +00:00
pow_user_fields()
timestamps()
end
2020-07-28 13:02:45 +00:00
def admin_changeset(user_or_changeset, attrs) do
role_list = Phoenix.json_library().decode!(Map.get(attrs, "roles"))
attrs = Map.put(attrs, "roles", role_list)
user_or_changeset
|> pow_user_id_field_changeset(attrs)
|> Changeset.cast(attrs, [:roles, :display_name])
2020-07-28 13:02:45 +00:00
|> pow_extension_changeset(attrs)
end
2020-07-17 23:30:31 +00:00
def changeset(user_or_changeset, attrs) do
user_or_changeset
|> pow_user_id_field_changeset(attrs)
|> pow_current_password_changeset(attrs)
|> new_password_changeset(attrs, @pow_config)
|> Changeset.cast(attrs, [:roles])
|> pow_extension_changeset(attrs)
end
2020-08-13 20:21:43 +00:00
def reset_password_changeset(user = %Auth.User{}, params) do
2020-07-17 23:30:31 +00:00
user
|> new_password_changeset(params, @pow_config)
|> Changeset.validate_required([:password])
end
end