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/auth/user.ex
defmodule Legendary.Auth.User do
@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}, default: []
field :display_name, :string
field :homepage_url, :string
pow_user_fields()
timestamps()
end
defp parse_roles(list) when is_list(list), do: list
defp parse_roles(binary) when is_binary(binary), do: Phoenix.json_library().decode!(binary)
def admin_changeset(user_or_changeset, attrs) do
role_list =
attrs
|> Map.get("roles", [])
|> parse_roles()
attrs = Map.put(attrs, "roles", role_list)
user_or_changeset
|> pow_user_id_field_changeset(attrs)
|> Changeset.cast(attrs, [:roles, :display_name])
|> pow_extension_changeset(attrs)
end
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
def reset_password_changeset(%Legendary.Auth.User{} = user, params) do
user
|> new_password_changeset(params, @pow_config)
|> Changeset.validate_required([:password])
end
end