36 lines
1.0 KiB
Elixir
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
|