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

Refactor current_user

This commit is contained in:
Daniel Barber 2018-02-21 14:24:06 -05:00
parent 73142f8a09
commit 21d843ebc8
Signed by: danbarber
GPG Key ID: 931D8112E0103DD8
5 changed files with 9 additions and 79 deletions

View File

@ -9,96 +9,32 @@ defmodule Chess.Auth do
alias Chess.Auth.User alias Chess.Auth.User
@doc """ def current_user(conn) do
Returns the list of users. Guardian.Plug.current_resource(conn)
end
## Examples
iex> list_users()
[%User{}, ...]
"""
def list_users do def list_users do
Repo.all(User) Repo.all(User)
end end
@doc """
Gets a single user.
Raises `Ecto.NoResultsError` if the User does not exist.
## Examples
iex> get_user!(123)
%User{}
iex> get_user!(456)
** (Ecto.NoResultsError)
"""
def get_user!(id), do: Repo.get!(User, id) def get_user!(id), do: Repo.get!(User, id)
@doc """
Creates a user.
## Examples
iex> create_user(%{field: value})
{:ok, %User{}}
iex> create_user(%{field: bad_value})
{:error, %Ecto.Changeset{}}
"""
def create_user(attrs \\ %{}) do def create_user(attrs \\ %{}) do
%User{} %User{}
|> User.changeset(attrs) |> User.changeset(attrs)
|> Repo.insert() |> Repo.insert()
end end
@doc """
Updates a user.
## Examples
iex> update_user(user, %{field: new_value})
{:ok, %User{}}
iex> update_user(user, %{field: bad_value})
{:error, %Ecto.Changeset{}}
"""
def update_user(%User{} = user, attrs) do def update_user(%User{} = user, attrs) do
user user
|> User.changeset(attrs) |> User.changeset(attrs)
|> Repo.update() |> Repo.update()
end end
@doc """
Deletes a User.
## Examples
iex> delete_user(user)
{:ok, %User{}}
iex> delete_user(user)
{:error, %Ecto.Changeset{}}
"""
def delete_user(%User{} = user) do def delete_user(%User{} = user) do
Repo.delete(user) Repo.delete(user)
end end
@doc """
Returns an `%Ecto.Changeset{}` for tracking user changes.
## Examples
iex> change_user(user)
%Ecto.Changeset{source: %User{}}
"""
def change_user(%User{} = user) do def change_user(%User{} = user) do
User.changeset(user, %{}) User.changeset(user, %{})
end end

View File

@ -3,6 +3,8 @@ defmodule ChessWeb.Api.GameController do
alias Chess.Store.Game alias Chess.Store.Game
import Chess.Auth, only: [current_user: 1]
def show(conn, %{"id" => id}) do def show(conn, %{"id" => id}) do
query = query =
from(game in Game, preload: [:user, :opponent]) from(game in Game, preload: [:user, :opponent])
@ -32,8 +34,4 @@ defmodule ChessWeb.Api.GameController do
Map.put(board, "#{to_file},#{to_rank}", piece) Map.put(board, "#{to_file},#{to_rank}", piece)
end end
defp current_user(conn) do
Guardian.Plug.current_resource(conn)
end
end end

View File

@ -3,6 +3,8 @@ defmodule ChessWeb.GameController do
alias Chess.Store.Game alias Chess.Store.Game
import Chess.Auth, only: [current_user: 1]
def index(conn, _params) do def index(conn, _params) do
changeset = Game.changeset(%Game{}) changeset = Game.changeset(%Game{})
games = games =
@ -72,8 +74,4 @@ defmodule ChessWeb.GameController do
query query
|> Repo.all |> Repo.all
end end
defp current_user(conn) do
Guardian.Plug.current_resource(conn)
end
end end

View File

@ -1,7 +1,7 @@
defmodule ChessWeb.GameView do defmodule ChessWeb.GameView do
use ChessWeb, :view use ChessWeb, :view
import ChessWeb.LayoutView, only: [current_user: 1] import Chess.Auth, only: [current_user: 1]
def opponent(conn, game) do def opponent(conn, game) do
if current_user(conn).id == game.user_id do if current_user(conn).id == game.user_id do

View File

@ -1,7 +1,5 @@
defmodule ChessWeb.LayoutView do defmodule ChessWeb.LayoutView do
use ChessWeb, :view use ChessWeb, :view
def current_user(conn) do import Chess.Auth, only: [current_user: 1]
Guardian.Plug.current_resource(conn)
end
end end