Add configurable prevention of user registration
Should be done appropriately soon.
This commit is contained in:
@ -24,9 +24,6 @@
|
|||||||
<.link href={~p"/users/log_out"} method="delete">Log out</.link>
|
<.link href={~p"/users/log_out"} method="delete">Log out</.link>
|
||||||
</li>
|
</li>
|
||||||
<% else %>
|
<% else %>
|
||||||
<li>
|
|
||||||
<.link href={~p"/users/register"}>Register</.link>
|
|
||||||
</li>
|
|
||||||
<li>
|
<li>
|
||||||
<.link href={~p"/users/log_in"}>Log in</.link>
|
<.link href={~p"/users/log_in"}>Log in</.link>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
@ -7,11 +7,13 @@ defmodule OutlookWeb.UserLoginLive do
|
|||||||
<.header class="text-center">
|
<.header class="text-center">
|
||||||
Sign in to account
|
Sign in to account
|
||||||
<:subtitle>
|
<:subtitle>
|
||||||
|
<%= unless System.get_env("DISABLE_REGISTRATION") do %>
|
||||||
Don't have an account?
|
Don't have an account?
|
||||||
<.link navigate={~p"/users/register"} class="font-semibold text-brand hover:underline">
|
<.link navigate={~p"/users/register"} class="font-semibold text-brand hover:underline">
|
||||||
Sign up
|
Sign up
|
||||||
</.link>
|
</.link>
|
||||||
for an account now.
|
for an account now.
|
||||||
|
<% end %>
|
||||||
</:subtitle>
|
</:subtitle>
|
||||||
</.header>
|
</.header>
|
||||||
|
|
||||||
|
|||||||
20
lib/outlook_web/prevent_registration.ex
Normal file
20
lib/outlook_web/prevent_registration.ex
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
defmodule Outlook.PreventRegistration do
|
||||||
|
|
||||||
|
import Plug.Conn
|
||||||
|
import Phoenix.Controller
|
||||||
|
|
||||||
|
def prevent_registration(conn, _) do
|
||||||
|
if System.get_env("DISABLE_REGISTRATION") && is_registration_path(conn) do
|
||||||
|
conn
|
||||||
|
|> put_flash(:error, "User Registration is disabled.")
|
||||||
|
|> redirect(to: "/users/log_in")
|
||||||
|
|> halt()
|
||||||
|
else
|
||||||
|
conn
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
defp is_registration_path(conn) do
|
||||||
|
"/users/register" == current_path(conn, %{})
|
||||||
|
end
|
||||||
|
end
|
||||||
@ -3,6 +3,8 @@ defmodule OutlookWeb.Router do
|
|||||||
|
|
||||||
import OutlookWeb.UserAuth
|
import OutlookWeb.UserAuth
|
||||||
|
|
||||||
|
import Outlook.PreventRegistration
|
||||||
|
|
||||||
pipeline :browser do
|
pipeline :browser do
|
||||||
plug :accepts, ["html"]
|
plug :accepts, ["html"]
|
||||||
plug :fetch_session
|
plug :fetch_session
|
||||||
@ -18,6 +20,10 @@ defmodule OutlookWeb.Router do
|
|||||||
plug :put_layout, {OutlookWeb.Layouts, :public}
|
plug :put_layout, {OutlookWeb.Layouts, :public}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
pipeline :check_registration do
|
||||||
|
plug :prevent_registration
|
||||||
|
end
|
||||||
|
|
||||||
pipeline :api do
|
pipeline :api do
|
||||||
plug :accepts, ["json"]
|
plug :accepts, ["json"]
|
||||||
end
|
end
|
||||||
@ -56,7 +62,7 @@ defmodule OutlookWeb.Router do
|
|||||||
## Authentication routes
|
## Authentication routes
|
||||||
|
|
||||||
scope "/", OutlookWeb do
|
scope "/", OutlookWeb do
|
||||||
pipe_through [:browser, :redirect_if_user_is_authenticated]
|
pipe_through [:browser, :redirect_if_user_is_authenticated, :check_registration]
|
||||||
|
|
||||||
live_session :redirect_if_user_is_authenticated,
|
live_session :redirect_if_user_is_authenticated,
|
||||||
on_mount: [{OutlookWeb.UserAuth, :redirect_if_user_is_authenticated}] do
|
on_mount: [{OutlookWeb.UserAuth, :redirect_if_user_is_authenticated}] do
|
||||||
|
|||||||
Reference in New Issue
Block a user