1
0
mirror of https://github.com/danbee/chess synced 2025-03-04 08:39:06 +00:00
chess/lib/chess/auth/user.ex
2018-02-02 10:31:04 -05:00

38 lines
774 B
Elixir

defmodule Chess.Auth.User do
@moduledoc false
use Ecto.Schema
import Ecto.Changeset
alias Chess.Auth.User
alias Comeonin.Argon2
schema "users" do
field :password, :string, virtual: true
field :password_hash, :string
field :username, :string
timestamps()
end
def changeset(user) do
user
|> cast(%{}, [:username, :password])
end
@doc false
def changeset(%User{} = user, attrs) do
user
|> cast(attrs, [:username, :password])
|> validate_required([:username, :password])
|> hash_password()
end
defp hash_password(
%Ecto.Changeset{valid?: true, changes: %{password: password}} = changeset
) do
change(changeset, Argon2.add_hash(password))
end
defp hash_password(changeset), do: changeset
end