diff --git a/lib/mv_web/live/auth/sign_out_live.ex b/lib/mv_web/live/auth/sign_out_live.ex new file mode 100644 index 0000000..2a0e0df --- /dev/null +++ b/lib/mv_web/live/auth/sign_out_live.ex @@ -0,0 +1,62 @@ +defmodule MvWeb.SignOutLive do + @moduledoc """ + Custom sign-out confirmation page. + + Replaces AshAuthentication.Phoenix.SignOutLive so the page meets accessibility + requirements (main landmark via Layouts.public_page, level-one heading) and + uses the project's DaisyUI button styles. Submits DELETE /sign-out for CSRF + protection, same contract as the library default. + """ + use Phoenix.LiveView + use Gettext, backend: MvWeb.Gettext + + alias Mv.Membership + alias MvWeb.Layouts + + @impl true + def mount(_params, session, socket) do + locale = session["locale"] || Application.get_env(:mv, :default_locale, "de") + Gettext.put_locale(MvWeb.Gettext, locale) + Gettext.put_locale(locale) + + club_name = + case Membership.get_settings() do + {:ok, settings} when is_binary(settings.club_name) -> settings.club_name + _ -> nil + end + + socket = + socket + |> assign(:sign_out_path, session["sign_out_path"] || "/sign-out") + |> assign(:locale, locale) + |> assign(:club_name, club_name) + |> Layouts.assign_page_title(dgettext("auth", "Sign out")) + + {:ok, socket} + end + + @impl true + def render(assigns) do + ~H""" + +
+
+
+

+ {dgettext("auth", "Sign out")} +

+

+ {dgettext("auth", "Are you sure you want to sign out?")} +

+ <.form for={%{}} action={@sign_out_path} method="delete"> + + +
+
+
+
+ """ + end +end diff --git a/lib/mv_web/router.ex b/lib/mv_web/router.ex index 591dead..f42eb29 100644 --- a/lib/mv_web/router.ex +++ b/lib/mv_web/router.ex @@ -112,7 +112,7 @@ defmodule MvWeb.Router do # ASHAUTHENTICATION GENERATED AUTH ROUTES auth_routes AuthController, Mv.Accounts.User, path: "/auth" - sign_out_route AuthController + sign_out_route AuthController, "/sign-out", live_view: MvWeb.SignOutLive # Remove these if you'd like to use your own authentication views sign_in_route register_path: "/register", diff --git a/priv/gettext/auth.pot b/priv/gettext/auth.pot index cd46c56..4fbbeda 100644 --- a/priv/gettext/auth.pot +++ b/priv/gettext/auth.pot @@ -152,3 +152,13 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Register" msgstr "" + +#: lib/mv_web/live/auth/sign_out_live.ex +#, elixir-autogen, elixir-format +msgid "Are you sure you want to sign out?" +msgstr "" + +#: lib/mv_web/live/auth/sign_out_live.ex +#, elixir-autogen, elixir-format +msgid "Sign out" +msgstr "" diff --git a/priv/gettext/de/LC_MESSAGES/auth.po b/priv/gettext/de/LC_MESSAGES/auth.po index 07583be..602a106 100644 --- a/priv/gettext/de/LC_MESSAGES/auth.po +++ b/priv/gettext/de/LC_MESSAGES/auth.po @@ -148,3 +148,13 @@ msgstr "Sprache auswählen" #, elixir-autogen, elixir-format msgid "Register" msgstr "Registrieren" + +#: lib/mv_web/live/auth/sign_out_live.ex +#, elixir-autogen, elixir-format +msgid "Are you sure you want to sign out?" +msgstr "Möchtest du dich wirklich abmelden?" + +#: lib/mv_web/live/auth/sign_out_live.ex +#, elixir-autogen, elixir-format +msgid "Sign out" +msgstr "Abmelden" diff --git a/priv/gettext/en/LC_MESSAGES/auth.po b/priv/gettext/en/LC_MESSAGES/auth.po index 564e640..8f78349 100644 --- a/priv/gettext/en/LC_MESSAGES/auth.po +++ b/priv/gettext/en/LC_MESSAGES/auth.po @@ -145,3 +145,13 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Register" msgstr "" + +#: lib/mv_web/live/auth/sign_out_live.ex +#, elixir-autogen, elixir-format +msgid "Are you sure you want to sign out?" +msgstr "" + +#: lib/mv_web/live/auth/sign_out_live.ex +#, elixir-autogen, elixir-format +msgid "Sign out" +msgstr ""