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}
|
{:error, :user, changeset, _} -> {:error, changeset}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@doc """
|
||||||
|
Returns `true` if any users exist.
|
||||||
|
"""
|
||||||
|
def has_registered_user? do
|
||||||
|
Repo.exists?(User.Query.has_users_query())
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -137,4 +137,19 @@ defmodule Core.Accounts.User do
|
||||||
add_error(changeset, :current_password, "is not valid")
|
add_error(changeset, :current_password, "is not valid")
|
||||||
end
|
end
|
||||||
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
|
end
|
||||||
|
|
|
@ -34,7 +34,7 @@ defmodule Web.Router do
|
||||||
end
|
end
|
||||||
|
|
||||||
scope "/", Web do
|
scope "/", Web do
|
||||||
pipe_through [:browser]
|
pipe_through [:browser, :require_setup]
|
||||||
|
|
||||||
get "/", PageController, :home
|
get "/", PageController, :home
|
||||||
|
|
||||||
|
|
|
@ -214,6 +214,17 @@ defmodule Web.UserAuth do
|
||||||
end
|
end
|
||||||
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
|
defp put_token_in_session(conn, token) do
|
||||||
conn
|
conn
|
||||||
|> put_session(:user_token, token)
|
|> put_session(:user_token, token)
|
||||||
|
|
Loading…
Reference in a new issue