39 lines
1.1 KiB
Elixir
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
|