sloanelybutsurely.com/lib/web/live/admin_login_live.ex

39 lines
1.1 KiB
Elixir

defmodule Web.AdminLoginLive do
@moduledoc false
use Web, :live_view
@impl true
def mount(params, _session, socket) do
socket =
assign(
socket,
form: to_form(%{"password" => "", "return_to" => params["return_to"]}),
return_to: params["return_to"]
)
{:ok, socket, layout: false}
end
@impl true
def render(assigns) do
~H"""
<main class="flex flex-col w-screen h-screen fixed justify-center items-center">
<.form for={@form} action={~p"/admin/session/create"} class="flex flex-col gap-y-2">
<.input type="hidden" field={@form[:return_to]} />
<.input type="password" placeholder="password" field={@form[:password]} required />
<div class="flex flex-col items-end">
<button type="submit" class="font-bold hover:underline">sign in</button>
<.a href={cancel_href(@return_to)}>
cancel
</.a>
</div>
</.form>
</main>
"""
end
defp cancel_href("/admin"), do: ~p"/"
defp cancel_href("/admin/" <> _), do: ~p"/"
defp cancel_href(nil), do: ~p"/"
defp cancel_href(return_to), do: return_to
end