57 lines
1.3 KiB
Elixir
57 lines
1.3 KiB
Elixir
defmodule ServerWeb.Router do
|
|
use ServerWeb, :router
|
|
|
|
pipeline :browser do
|
|
plug :accepts, ["html"]
|
|
plug :fetch_session
|
|
plug :fetch_live_flash
|
|
plug :put_root_layout, html: {ServerWeb.Layouts, :root}
|
|
plug :protect_from_forgery
|
|
plug :put_secure_browser_headers
|
|
end
|
|
|
|
pipeline :require_auth do
|
|
plug ServerWeb.Plugs.RequireAuth
|
|
end
|
|
|
|
pipeline :api do
|
|
plug :accepts, ["json"]
|
|
end
|
|
|
|
# Public login/logout
|
|
scope "/", ServerWeb do
|
|
pipe_through :browser
|
|
|
|
get "/login", AuthController, :login
|
|
post "/login", AuthController, :create
|
|
delete "/logout", AuthController, :delete
|
|
end
|
|
|
|
# Authenticated dashboard (LiveView)
|
|
scope "/", ServerWeb do
|
|
pipe_through [:browser, :require_auth]
|
|
|
|
live_session :authenticated, on_mount: {ServerWeb.LiveAuth, :require_authenticated} do
|
|
live "/", OverviewLive, :index
|
|
live "/hosts/:name", HostDetailLive, :show
|
|
live "/vms", VmSearchLive, :index
|
|
live "/admin/hosts", AdminHostsLive, :index
|
|
end
|
|
end
|
|
|
|
scope "/api", ServerWeb do
|
|
pipe_through :api
|
|
|
|
get "/hosts/:name", HostController, :show
|
|
end
|
|
|
|
if Application.compile_env(:server, :dev_routes) do
|
|
import Phoenix.LiveDashboard.Router
|
|
|
|
scope "/dev" do
|
|
pipe_through :browser
|
|
|
|
live_dashboard "/dashboard", metrics: ServerWeb.Telemetry
|
|
end
|
|
end
|
|
end
|