add "setup" mode
This commit is contained in:
parent
69db46715f
commit
d7ac169607
4 changed files with 34 additions and 1 deletions
lib
|
@ -196,4 +196,11 @@ defmodule Core.Accounts do
|
|||
{:error, :user, changeset, _} -> {:error, changeset}
|
||||
end
|
||||
end
|
||||
|
||||
@doc """
|
||||
Returns `true` if any users exist.
|
||||
"""
|
||||
def has_registered_user? do
|
||||
Repo.exists?(User.Query.has_users_query())
|
||||
end
|
||||
end
|
||||
|
|
|
@ -137,4 +137,19 @@ defmodule Core.Accounts.User do
|
|||
add_error(changeset, :current_password, "is not valid")
|
||||
end
|
||||
end
|
||||
|
||||
defmodule Query do
|
||||
@moduledoc false
|
||||
import Ecto.Query
|
||||
|
||||
def base do
|
||||
from _ in Schema.User, as: :users
|
||||
end
|
||||
|
||||
def has_users_query(query \\ base()) do
|
||||
query
|
||||
|> limit(1)
|
||||
|> select([users: _], true)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -34,7 +34,7 @@ defmodule Web.Router do
|
|||
end
|
||||
|
||||
scope "/", Web do
|
||||
pipe_through [:browser]
|
||||
pipe_through [:browser, :require_setup]
|
||||
|
||||
get "/", PageController, :home
|
||||
|
||||
|
|
|
@ -214,6 +214,17 @@ defmodule Web.UserAuth do
|
|||
end
|
||||
end
|
||||
|
||||
def require_setup(conn, _opts) do
|
||||
if Core.Accounts.has_registered_user?() do
|
||||
conn
|
||||
else
|
||||
conn
|
||||
|> maybe_store_return_to()
|
||||
|> redirect(to: ~p"/admin/users/register")
|
||||
|> halt()
|
||||
end
|
||||
end
|
||||
|
||||
defp put_token_in_session(conn, token) do
|
||||
conn
|
||||
|> put_session(:user_token, token)
|
||||
|
|
Loading…
Reference in a new issue