Packages

This library is a summary of the functions that are generally required for Web service development.

Current section

Files

Jump to
servicex lib servicex accounts user.ex
Raw

lib/servicex/accounts/user.ex

defmodule Servicex.Accounts.User do
use Ecto.Schema
import Ecto.Changeset
schema "users" do
field :email, :string
field :hashed_password, :string
field :password, :string, virtual: true
field :name, :string
field :role, :string
timestamps()
end
@doc false
def changeset(user, attrs) do
user
|> cast(attrs, [:name, :email, :password, :role])
|> validate_required([:name, :email, :password, :role])
|> unique_constraint(:email)
|> put_password_hash()
end
def changeset_authentication(user, attrs) do
user
|> cast(attrs, [:email, :password])
|> validate_required([:email, :password])
|> put_password_hash()
end
defp put_password_hash(changeset) do
IO.inspect(changeset)
changeset =
case changeset do
%Ecto.Changeset{ valid?: true, changes: %{ password: pass }} ->
put_change(changeset, :hashed_password, Bcrypt.hash_pwd_salt(pass))
_ ->
changeset
end
end
end