2019-08-15 02:32:32 +02:00
|
|
|
defmodule PhilomenaWeb.Router do
|
|
|
|
use PhilomenaWeb, :router
|
2019-08-17 20:58:36 +02:00
|
|
|
use Pow.Phoenix.Router
|
2019-11-13 04:12:46 +01:00
|
|
|
use Pow.Extension.Phoenix.Router, otp_app: :philomena
|
2019-08-15 02:32:32 +02:00
|
|
|
|
|
|
|
pipeline :browser do
|
|
|
|
plug :accepts, ["html"]
|
|
|
|
plug :fetch_session
|
|
|
|
plug :fetch_flash
|
|
|
|
plug :protect_from_forgery
|
|
|
|
plug :put_secure_browser_headers
|
2019-11-17 19:18:21 +01:00
|
|
|
plug PhilomenaWeb.CurrentFilterPlug
|
|
|
|
plug PhilomenaWeb.ImageFilterPlug
|
|
|
|
plug PhilomenaWeb.PaginationPlug
|
|
|
|
plug PhilomenaWeb.EnsureUserEnabledPlug
|
|
|
|
plug PhilomenaWeb.CurrentBanPlug
|
2019-11-17 19:52:59 +01:00
|
|
|
plug PhilomenaWeb.NotificationCountPlug
|
2019-11-18 18:32:23 +01:00
|
|
|
plug PhilomenaWeb.SiteNoticePlug
|
2019-11-28 03:57:25 +01:00
|
|
|
plug PhilomenaWeb.ForumListPlug
|
2019-11-17 20:47:01 +01:00
|
|
|
plug PhilomenaWeb.FilterSelectPlug
|
2019-08-15 02:32:32 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
pipeline :api do
|
|
|
|
plug :accepts, ["json"]
|
|
|
|
end
|
|
|
|
|
2019-11-13 04:12:46 +01:00
|
|
|
pipeline :ensure_totp do
|
2019-11-17 19:18:21 +01:00
|
|
|
plug PhilomenaWeb.TotpPlug
|
2019-11-13 04:12:46 +01:00
|
|
|
end
|
|
|
|
|
2019-11-13 05:49:37 +01:00
|
|
|
pipeline :protected do
|
|
|
|
plug Pow.Plug.RequireAuthenticated,
|
|
|
|
error_handler: Pow.Phoenix.PlugErrorHandler
|
|
|
|
end
|
|
|
|
|
2019-10-31 18:57:39 +01:00
|
|
|
scope "/" do
|
2019-11-13 04:12:46 +01:00
|
|
|
pipe_through [:browser, :ensure_totp]
|
2019-10-31 18:57:39 +01:00
|
|
|
|
2019-11-15 16:15:21 +01:00
|
|
|
pow_routes()
|
2019-11-13 04:12:46 +01:00
|
|
|
pow_extension_routes()
|
2019-10-31 18:57:39 +01:00
|
|
|
end
|
2019-08-17 20:58:36 +02:00
|
|
|
|
2019-08-15 02:32:32 +02:00
|
|
|
scope "/", PhilomenaWeb do
|
2019-11-13 06:28:02 +01:00
|
|
|
pipe_through [:browser, :protected]
|
2019-11-13 04:12:46 +01:00
|
|
|
|
|
|
|
# Additional routes for TOTP
|
2019-11-15 03:40:35 +01:00
|
|
|
scope "/registrations", Registration, as: :registration do
|
2019-11-13 04:12:46 +01:00
|
|
|
resources "/totp", TotpController, only: [:edit, :update], singleton: true
|
|
|
|
end
|
|
|
|
|
2019-11-15 03:40:35 +01:00
|
|
|
scope "/sessions", Session, as: :session do
|
2019-11-13 04:12:46 +01:00
|
|
|
resources "/totp", TotpController, only: [:new, :create], singleton: true
|
|
|
|
end
|
2019-11-13 06:28:02 +01:00
|
|
|
end
|
|
|
|
|
2019-11-16 04:50:58 +01:00
|
|
|
scope "/", PhilomenaWeb do
|
|
|
|
pipe_through [:browser, :ensure_totp, :protected]
|
|
|
|
|
|
|
|
resources "/notifications", NotificationController, only: [:index, :delete]
|
2019-11-18 17:00:08 +01:00
|
|
|
resources "/conversations", ConversationController, only: [:index, :show, :new, :create] do
|
|
|
|
resources "/messages", Conversation.MessageController, only: [:create]
|
|
|
|
end
|
2019-11-17 03:20:33 +01:00
|
|
|
resources "/images", ImageController, only: [] do
|
|
|
|
resources "/vote", Image.VoteController, only: [:create, :delete], singleton: true
|
|
|
|
resources "/fave", Image.FaveController, only: [:create, :delete], singleton: true
|
|
|
|
resources "/hide", Image.HideController, only: [:create, :delete], singleton: true
|
2019-11-17 18:50:42 +01:00
|
|
|
resources "/subscription", Image.SubscriptionController, only: [:create, :delete], singleton: true
|
2019-11-17 03:20:33 +01:00
|
|
|
end
|
2019-11-17 19:05:50 +01:00
|
|
|
|
|
|
|
resources "/forums", ForumController, only: [] do
|
2019-11-19 04:38:22 +01:00
|
|
|
resources "/topics", TopicController, only: [:new, :create] do
|
2019-11-17 19:05:50 +01:00
|
|
|
resources "/subscription", Topic.SubscriptionController, only: [:create, :delete], singleton: true
|
|
|
|
end
|
|
|
|
end
|
2019-11-17 20:47:01 +01:00
|
|
|
|
|
|
|
scope "/filters", Filter, as: :filter do
|
|
|
|
resources "/spoiler_type", SpoilerTypeController, only: [:update], singleton: true
|
|
|
|
end
|
2019-11-16 04:50:58 +01:00
|
|
|
end
|
|
|
|
|
2019-11-13 06:28:02 +01:00
|
|
|
scope "/", PhilomenaWeb do
|
|
|
|
pipe_through [:browser, :ensure_totp]
|
2019-08-15 02:32:32 +02:00
|
|
|
|
2019-10-04 18:48:00 +02:00
|
|
|
get "/", ActivityController, :index
|
2019-08-18 18:17:05 +02:00
|
|
|
|
2019-10-09 01:19:57 +02:00
|
|
|
resources "/activity", ActivityController, only: [:index]
|
2019-11-26 05:51:17 +01:00
|
|
|
resources "/images", ImageController, only: [:index, :show, :new, :create] do
|
2019-11-17 05:59:24 +01:00
|
|
|
resources "/comments", Image.CommentController, only: [:index, :show, :create]
|
2019-11-25 03:16:22 +01:00
|
|
|
resources "/tags", Image.TagController, only: [:update], singleton: true
|
|
|
|
resources "/sources", Image.SourceController, only: [:update], singleton: true
|
|
|
|
resources "/tag_changes", Image.TagChangeController, only: [:index]
|
|
|
|
resources "/source_changes", Image.SourceChangeController, only: [:index]
|
2019-11-12 03:38:51 +01:00
|
|
|
end
|
2019-11-27 03:19:07 +01:00
|
|
|
scope "/tags", Tag, as: :tag do
|
|
|
|
resources "/autocomplete", AutocompleteController, only: [:show], singleton: true
|
|
|
|
end
|
2019-08-18 20:14:36 +02:00
|
|
|
resources "/tags", TagController, only: [:index, :show]
|
2019-08-29 03:33:58 +02:00
|
|
|
resources "/search", SearchController, only: [:index]
|
2019-10-06 23:31:48 +02:00
|
|
|
resources "/forums", ForumController, only: [:index, :show] do
|
2019-11-18 04:31:28 +01:00
|
|
|
resources "/topics", TopicController, only: [:show] do
|
|
|
|
resources "/posts", Topic.PostController, only: [:create], singleton: true
|
|
|
|
end
|
2019-10-06 23:31:48 +02:00
|
|
|
end
|
2019-11-12 04:10:41 +01:00
|
|
|
resources "/comments", CommentController, only: [:index]
|
2019-08-18 20:14:36 +02:00
|
|
|
|
2019-10-09 02:45:04 +02:00
|
|
|
scope "/filters", Filter, as: :filter do
|
2019-11-13 04:12:46 +01:00
|
|
|
resources "/current", CurrentController, only: [:update], singleton: true
|
2019-10-09 02:45:04 +02:00
|
|
|
end
|
2019-10-09 17:51:14 +02:00
|
|
|
resources "/filters", FilterController
|
2019-11-12 02:27:09 +01:00
|
|
|
resources "/profiles", ProfileController, only: [:show]
|
2019-11-13 17:28:02 +01:00
|
|
|
resources "/captchas", CaptchaController, only: [:create]
|
2019-11-28 03:06:41 +01:00
|
|
|
scope "/posts", Post, as: :post do
|
|
|
|
resources "/preview", PreviewController, only: [:create]
|
|
|
|
end
|
2019-11-17 23:14:20 +01:00
|
|
|
resources "/posts", PostController, only: [:index]
|
2019-11-18 01:09:15 +01:00
|
|
|
resources "/commissions", CommissionController, only: [:index, :show]
|
2019-11-18 05:47:09 +01:00
|
|
|
resources "/galleries", GalleryController, only: [:index, :show]
|
2019-10-09 02:45:04 +02:00
|
|
|
|
2019-08-18 20:14:36 +02:00
|
|
|
get "/:id", ImageController, :show
|
2019-11-28 03:06:41 +01:00
|
|
|
# get "/:forum_id", ForumController, :show # impossible to do without constraints
|
|
|
|
get "/:forum_id/:id", TopicController, :show
|
|
|
|
get "/:forum_id/:id/:page", TopicController, :show
|
2019-11-28 18:12:10 +01:00
|
|
|
get "/:forum_id/:id/post/:post_id", TopicController, :show
|
2019-08-15 02:32:32 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
# Other scopes may use custom stacks.
|
|
|
|
# scope "/api", PhilomenaWeb do
|
|
|
|
# pipe_through :api
|
|
|
|
# end
|
|
|
|
end
|