mirror of
				https://github.com/livebook-dev/livebook.git
				synced 2025-10-29 06:46:03 +08:00 
			
		
		
		
	* Wrap live routes in live_session * Update Phoenix LV * Migrate to live_component component call * render_block -> render_slot * phx-disconnected -> phx-loading * phx-capture-click -> phx-click-away * Add hook dealing with current user * Bump LV * Bump LV
		
			
				
	
	
		
			81 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
| defmodule LivebookWeb.Router do
 | |
|   use LivebookWeb, :router
 | |
|   import Phoenix.LiveDashboard.Router
 | |
| 
 | |
|   pipeline :browser do
 | |
|     plug :accepts, ["html"]
 | |
|     plug :fetch_session
 | |
|     plug :fetch_live_flash
 | |
|     plug :put_root_layout, {LivebookWeb.LayoutView, :root}
 | |
|     plug :protect_from_forgery
 | |
|     plug :put_secure_browser_headers
 | |
|   end
 | |
| 
 | |
|   pipeline :auth do
 | |
|     plug LivebookWeb.AuthPlug
 | |
|     plug LivebookWeb.UserPlug
 | |
|   end
 | |
| 
 | |
|   live_session :default, on_mount: LivebookWeb.CurrentUserHook do
 | |
|     scope "/", LivebookWeb do
 | |
|       pipe_through [:browser, :auth]
 | |
| 
 | |
|       live "/", HomeLive, :page
 | |
|       live "/home/user-profile", HomeLive, :user
 | |
|       live "/home/import/:tab", HomeLive, :import
 | |
|       live "/home/sessions/:session_id/close", HomeLive, :close_session
 | |
| 
 | |
|       live "/settings", SettingsLive, :page
 | |
|       live "/settings/user-profile", SettingsLive, :user
 | |
|       live "/settings/add-file-system", SettingsLive, :add_file_system
 | |
|       live "/settings/detach-file-system/:file_system_index", SettingsLive, :detach_file_system
 | |
| 
 | |
|       live "/explore", ExploreLive, :page
 | |
|       live "/explore/user-profile", ExploreLive, :user
 | |
|       live "/explore/notebooks/:slug", ExploreLive, :notebook
 | |
| 
 | |
|       live "/sessions/:id", SessionLive, :page
 | |
|       live "/sessions/:id/user-profile", SessionLive, :user
 | |
|       live "/sessions/:id/shortcuts", SessionLive, :shortcuts
 | |
|       live "/sessions/:id/settings/runtime", SessionLive, :runtime_settings
 | |
|       live "/sessions/:id/settings/file", SessionLive, :file_settings
 | |
|       live "/sessions/:id/bin", SessionLive, :bin
 | |
|       get "/sessions/:id/export/download/:format", SessionController, :download_source
 | |
|       live "/sessions/:id/export/:tab", SessionLive, :export
 | |
|       live "/sessions/:id/cell-settings/:cell_id", SessionLive, :cell_settings
 | |
|       live "/sessions/:id/cell-upload/:cell_id", SessionLive, :cell_upload
 | |
|       live "/sessions/:id/delete-section/:section_id", SessionLive, :delete_section
 | |
|       get "/sessions/:id/images/:image", SessionController, :show_image
 | |
|       live "/sessions/:id/*path_parts", SessionLive, :catch_all
 | |
|     end
 | |
| 
 | |
|     # Public authenticated URLs that people may be directed to
 | |
|     scope "/", LivebookWeb do
 | |
|       pipe_through [:browser, :auth]
 | |
| 
 | |
|       live "/import", HomeLive, :public_import
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   scope "/" do
 | |
|     pipe_through [:browser, :auth]
 | |
| 
 | |
|     live_dashboard "/dashboard",
 | |
|       metrics: LivebookWeb.Telemetry,
 | |
|       home_app: {"Livebook", :livebook}
 | |
|   end
 | |
| 
 | |
|   # Public URLs without authentication
 | |
|   scope "/", LivebookWeb do
 | |
|     pipe_through :browser
 | |
| 
 | |
|     get "/health", HealthController, :index
 | |
|   end
 | |
| 
 | |
|   scope "/authenticate", LivebookWeb do
 | |
|     pipe_through :browser
 | |
| 
 | |
|     get "/", AuthController, :index
 | |
|     post "/", AuthController, :authenticate
 | |
|   end
 | |
| end
 |