defmodule Example.Accounts.User do @moduledoc false use Ash.Resource, data_layer: Ash.DataLayer.Ets, extensions: [AshAuthentication, AshAuthentication.PasswordAuthentication] @type t :: %__MODULE__{ id: Ecto.UUID.t(), email: String.t(), hashed_password: String.t(), created_at: DateTime.t(), updated_at: DateTime.t() } actions do defaults([:read]) end attributes do uuid_primary_key(:id) attribute(:email, :ci_string, allow_nil?: false) attribute(:hashed_password, :string, allow_nil?: false, sensitive?: true, private?: true) create_timestamp(:created_at) update_timestamp(:updated_at) end authentication do api(Example.Accounts) end password_authentication do identity_field(:email) hashed_password_field(:hashed_password) end identities do identity(:email, [:email], pre_check_with: Example.Accounts) end end