defmodule Fields.Password do @moduledoc """ An Ecto Type for hashed passwords. Hashed using Argon2. See `Fields.Helpers` for hashing details. ## Example schema "users" do field(:email, Fields.EmailEncrypted) field(:password, Fields.Password) end """ @behaviour Ecto.Type alias Fields.Helpers def type, do: :binary def cast(value) do {:ok, to_string(value)} end def dump(value) do {:ok, Helpers.hash(:argon2, value)} end def load(value) do {:ok, value} end def embed_as(_), do: :self def equal?(term1, term2), do: term1 == term2 end