Current section

Files

Jump to
caravela priv templates auth_user_helpers.eex
Raw

priv/templates/auth_user_helpers.eex

# --- Begin auth helpers injected by Caravela ---
@doc "Changeset for self-registration (with password hashing)."
def registration_changeset(user, attrs) do
user
|> cast(attrs, [:email<%= if @has_name_field do %>, :name<% end %>])
|> validate_required([:email])
|> unique_constraint(:email)
|> put_hashed_password(attrs)
end
@doc "Changeset for resetting password."
def password_changeset(user, attrs) do
user
|> cast(attrs, [])
|> put_hashed_password(attrs)
end
<%= if @api_token do %> @doc false
def api_tokens_changeset(user, attrs) do
cast(user, attrs, [:api_tokens])
end
<% end %><%= if @confirm do %> @doc false
def confirm_changeset(user, attrs) do
cast(user, attrs, [:confirmed_at])
end
<% end %> defp put_hashed_password(changeset, %{"password" => password})
when is_binary(password) and byte_size(password) > 0 do
do_put_password(changeset, password)
end
defp put_hashed_password(changeset, %{password: password})
when is_binary(password) and byte_size(password) > 0 do
do_put_password(changeset, password)
end
defp put_hashed_password(changeset, _), do: changeset
defp do_put_password(changeset, password) do
if Code.ensure_loaded?(Argon2) and function_exported?(Argon2, :hash_pwd_salt, 1) do
put_change(changeset, :hashed_password, apply(Argon2, :hash_pwd_salt, [password]))
else
add_error(changeset, :password, "argon2_elixir not available")
end
end
# --- End auth helpers injected by Caravela ---