clacks/lib/clacks_web/router.ex

54 lines
1.3 KiB
Elixir

defmodule ClacksWeb.Router do
use ClacksWeb, :router
pipeline :browser do
plug :accepts, ["html"]
plug :fetch_session
plug :fetch_flash
plug :protect_from_forgery
plug :put_secure_browser_headers
plug ClacksWeb.Plug.WebAuthenticate, on_failure: :pass
end
pipeline :browser_authenticated do
plug ClacksWeb.Plug.WebAuthenticate, on_failure: :redirect_to_login
end
pipeline :activitypub do
plug :accepts, ["activity+json", "html"]
end
scope "/", ClacksWeb do
pipe_through :browser
get "/login", LoginController, :login
post "/login", LoginController, :login_post
post "/logout", LoginController, :logout_post
end
scope "/", ClacksWeb do
pipe_through :browser
pipe_through :browser_authenticated
end
scope "/", ClacksWeb do
pipe_through :activitypub
get "/objects/:id", ObjectsController, :get
get "/users/:nickname", ActorController, :get
get "/users/:nickname/followers", ActorController, :followers
get "/users/:nickname/following", ActorController, :following
post "/inbox", InboxController, :shared
post "/users/:nickname/inbox", InboxController, :user_specific
get "/.well-known/webfinger", WebFingerController, :get
end
# Other scopes may use custom stacks.
# scope "/api", ClacksWeb do
# pipe_through :api
# end
end