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

52 lines
887 B
Elixir

defmodule Chess.Auth do
@moduledoc """
The Auth context.
"""
import Ecto.Query, warn: false
alias Comeonin.Argon2
alias Chess.Repo
alias Chess.Store.User
def current_user(conn) do
Guardian.Plug.current_resource(conn)
end
def list_users do
Repo.all(User)
end
def get_user!(id), do: Repo.get!(User, id)
def create_user(attrs \\ %{}) do
%User{}
|> User.changeset(attrs)
|> Repo.insert()
end
def update_user(%User{} = user, attrs) do
user
|> User.changeset(attrs)
|> Repo.update()
end
def delete_user(%User{} = user) do
Repo.delete(user)
end
def change_user(%User{} = user) do
User.changeset(user, %{})
end
@doc false
def authenticate_user(email, password) do
query = from u in User,
where: u.email == ^email
query
|> Repo.one
|> Argon2.check_pass(password)
end
end