berrypod/lib/berrypod_web/setup_hook.ex
jamey 64f083d271
All checks were successful
deploy / deploy (push) Successful in 1m31s
improve setup UX: password field, setup hook, checklist banners, theme tweaks
- add password field and required shop name to setup wizard
- extract SetupHook for DRY redirect to /setup when no admin exists
- add ?from=checklist param to checklist hrefs with contextual banner on
  email settings and theme pages for easy return to dashboard
- remove email warning banner from admin layout (checklist covers it)
- make email a required checklist item (no longer optional)
- add DevReset module for wiping dev data without restart
- rename "Theme Studio" to "Theme", drop subtitle
- lower theme editor side-by-side breakpoint from 64em to 48em
- clean up login/registration pages (remove dead registration_open code)
- fix settings.put_secret to invalidate cache after write

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 17:41:08 +00:00

19 lines
498 B
Elixir

defmodule BerrypodWeb.SetupHook do
@moduledoc """
Redirects to /setup when no admin account exists (fresh install).
Add `{BerrypodWeb.SetupHook, :require_admin}` to any live_session
that shouldn't be accessible before setup is complete.
"""
import Phoenix.LiveView, only: [redirect: 2]
def on_mount(:require_admin, _params, _session, socket) do
if Berrypod.Accounts.has_admin?() do
{:cont, socket}
else
{:halt, redirect(socket, to: "/setup")}
end
end
end