19 lines
498 B
Elixir
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
|