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