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

52 lines
895 B
Elixir

defmodule Chess.Auth do
@moduledoc """
The Auth context.
"""
import Ecto.Query, warn: false
alias Comeonin.Argon2
alias Chess.Repo
alias Chess.Auth.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(username, password) do
query = from u in User,
where: u.username == ^username
query
|> Repo.one
|> Argon2.check_pass(password)
end
end