75 lines
2.1 KiB
Elixir
75 lines
2.1 KiB
Elixir
defmodule SomethingErlangWeb.Router do
|
|
use SomethingErlangWeb, :router
|
|
|
|
import SomethingErlangWeb.UserAuth
|
|
|
|
pipeline :browser do
|
|
plug(:accepts, ["html"])
|
|
plug(:fetch_session)
|
|
plug(:fetch_live_flash)
|
|
plug(:put_root_layout, html: {SomethingErlangWeb.Layouts, :root})
|
|
plug(:protect_from_forgery)
|
|
plug(:put_secure_browser_headers)
|
|
plug(:fetch_current_user)
|
|
plug(:load_bbcookie)
|
|
end
|
|
|
|
pipeline :api do
|
|
plug(:accepts, ["json"])
|
|
end
|
|
|
|
scope "/", SomethingErlangWeb do
|
|
pipe_through(:browser)
|
|
|
|
get("/", PageController, :home)
|
|
post("/", PageController, :to_forum_path)
|
|
|
|
live_session :user_browsing,
|
|
on_mount: [{SomethingErlangWeb.UserAuth, :ensure_authenticated}] do
|
|
live("/thread", ThreadLive)
|
|
live("/thread/:id", ThreadLive)
|
|
end
|
|
end
|
|
|
|
## Authentication routes
|
|
|
|
scope "/", SomethingErlangWeb do
|
|
pipe_through([:browser, :redirect_if_user_is_authenticated])
|
|
|
|
live_session :redirect_if_user_is_authenticated,
|
|
on_mount: [{SomethingErlangWeb.UserAuth, :redirect_if_user_is_authenticated}] do
|
|
live("/users/log_in", UserLoginLive, :new)
|
|
end
|
|
|
|
post("/users/log_in", UserSessionController, :create)
|
|
end
|
|
|
|
scope "/", SomethingErlangWeb do
|
|
pipe_through([:browser])
|
|
|
|
delete("/users/log_out", UserSessionController, :delete)
|
|
end
|
|
|
|
# Other scopes may use custom stacks.
|
|
# scope "/api", SomethingErlangWeb do
|
|
# pipe_through :api
|
|
# end
|
|
|
|
# Enable LiveDashboard and Swoosh mailbox preview in development
|
|
if Application.compile_env(:something_erlang, :dev_routes) do
|
|
# If you want to use the LiveDashboard in production, you should put
|
|
# it behind authentication and allow only admins to access it.
|
|
# If your application does not have an admins-only section yet,
|
|
# you can use Plug.BasicAuth to set up some basic authentication
|
|
# as long as you are also using SSL (which you should anyway).
|
|
import Phoenix.LiveDashboard.Router
|
|
|
|
scope "/dev" do
|
|
pipe_through(:browser)
|
|
|
|
live_dashboard("/dashboard", metrics: SomethingErlangWeb.Telemetry)
|
|
forward("/mailbox", Plug.Swoosh.MailboxPreview)
|
|
end
|
|
end
|
|
end
|