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