Current section
Files
Jump to
Current section
Files
lib/carbon.ex
defmodule Carbon do
import Ecto.Changeset
alias Ecto.Changeset
def attempt(email, password) do
user = repo.get_by(model(), email: email)
if (user && verify_password(password, user.password_hash)) do
user
else
nil
end
end
def attempt(_), do: nil
def hash_password(%Changeset{} = changeset, password) do
put_change(changeset, :password_hash, hash_password(password))
end
def hash_password(%Changeset{} = changeset) do
case get_change(changeset, :password) do
nil -> changeset
password -> hash_password(changeset, password)
end
end
def hash_password(password) do
Comeonin.Bcrypt.hashpwsalt(password)
end
def verify_password(password, hash) do
Comeonin.Bcrypt.checkpw(password, hash)
end
def get_user(user_id) do
repo.get(model(), user_id)
end
def repo do
Application.get_env(:carbon, :repo)
end
def model do
Application.get_env(:carbon, :model, Carbon.User)
end
end