sloanelybutsurely.com/lib/cms_web/live/admin_login_live.ex
2025-02-22 13:59:24 -05:00

51 lines
1.4 KiB
Elixir

defmodule CMSWeb.AdminLoginLive do
@moduledoc false
use CMSWeb, :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"
id={@form[:return_to].id}
name={@form[:return_to].name}
value={@form[:return_to].value}
/>
<input
type="password"
placeholder="password"
id={@form[:password].id}
name={@form[:password].name}
value={@form[:password].value}
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