Files
2024-08-12 15:46:13 +02:00

77 lines
2.2 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)
live("/bookmarks", BookmarksLive)
live("/bookmarks/:id", BookmarksLive)
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