Packages
guard
0.1.0
0.19.1
0.19.0
0.18.0
0.17.2
0.17.1
0.17.0
0.16.3
0.16.2
0.16.1
0.16.0
0.15.3
0.15.2
0.15.1
0.15.0
0.14.9
0.14.8
0.14.7
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.13.1
0.13.0
0.12.9
0.12.8
0.12.7
0.12.6
0.12.5
0.12.4
0.12.3
0.12.2
0.12.1
0.12.0
0.11.3
0.11.2
0.11.1
0.11.0
0.10.4
0.10.3
0.10.2
0.10.1
0.10.0
0.9.0
0.8.0
0.7.1
0.7.0
0.6.1
0.6.0
0.5.0
0.4.1
0.4.0
0.3.0
0.2.0
0.1.0
Useful package for dealing with user authentication and signup
Current section
Files
Jump to
Current section
Files
lib/doorman/users.ex
defmodule Doorman.Users do
alias Doorman.{Repo, User, Device}
import Ecto.Query
def delete_user(user) do
Repo.delete(user)
end
def update_user(user, changes) do
changeset = User.changeset(user, changes)
case Repo.update(changeset) do
{:ok, user} ->
{:ok, user}
{:error, changeset} ->
{:error, Repo.changeset_errors(changeset), changeset}
end
end
def create_user(changes \\ %{}) do
case %User{}
|> User.changeset(changes)
|> Repo.insert() do
{:ok, user} ->
{:ok, user}
{:error, changeset} ->
{:error, Repo.changeset_errors(changeset), changeset}
end
end
def get_by_email(email) do
trimmed = trimmer(email)
case get_by(email: trimmed) do
nil -> get_by(requested_email: trimmed)
confirmed -> confirmed
end
end
def get_by_email!(email) do
trimmed = trimmer(email)
case get_by(email: trimmed) do
nil -> get_by!(requested_email: trimmed)
confirmed -> confirmed
end
end
def get_by_mobile(mobile) do
case get_by(mobile: mobile) do
nil -> get_by(requested_mobile: mobile)
confirmed -> confirmed
end
end
def get_by_mobile!(mobile) do
case get_by(mobile: mobile) do
nil -> get_by!(requested_mobile: mobile)
confirmed -> confirmed
end
end
def get_by_username(username) do
get_by(username: trimmer(username))
end
def get_by_username!(username) do
get_by!(username: trimmer(username))
end
defp trimmer(str) do
str |> String.trim() |> String.downcase()
end
def get(id) do
Repo.get(User, id)
end
def get!(id) do
Repo.get!(User, id)
end
def get_by(opts) do
Repo.get_by(User, opts)
end
def get_by!(opts) do
Repo.get_by!(User, opts)
end
def list_devices(%User{} = user) do
Repo.all(from(d in Device, where: d.user_id == ^user.id))
end
end