blank-white-cards/apps/bwc_web/lib/bwc_web/controllers/session_controller.ex

36 lines
1.0 KiB
Elixir

defmodule BwcWeb.SessionController do
use BwcWeb, :controller
def new(conn, _params) do
player = Bwc.new_player()
render(conn, "new.html", player: player)
end
def set_name(conn, params) do
import Logger
case Map.get(params, "username") |> Bwc.get_or_create_player() do
{:ok, player} ->
conn |> put_session(:username, player.username) |> render("set_name.json", username: player.username)
{:error, username} ->
conn |> render("error.json", username: username)
end
end
def create(conn, %{"player" => %{"username" => username, "picture" => picture}}) do
cards = Bwc.list_cards()
case Bwc.get_or_create_player(username) do
{:ok, player} ->
conn
|> put_session(:username, username)
|> put_flash(:info, "Welcome to the game, #{player.username}.")
|> redirect(to: Routes.card_path(conn, :index, cards))
{:error, player} ->
conn |> put_flash(:error, "Something's wrong.") |> render("new.html", player: player)
end
end
end