philomena/lib/philomena_web/router.ex

242 lines
10 KiB
Elixir
Raw Normal View History

2019-08-14 20:32:32 -04:00
defmodule PhilomenaWeb.Router do
use PhilomenaWeb, :router
2019-08-17 14:58:36 -04:00
use Pow.Phoenix.Router
2019-11-12 22:12:46 -05:00
use Pow.Extension.Phoenix.Router, otp_app: :philomena
2019-08-14 20:32:32 -04:00
pipeline :browser do
plug :accepts, ["html"]
plug :fetch_session
plug :fetch_flash
plug :protect_from_forgery
plug :put_secure_browser_headers
2019-12-06 12:41:02 -05:00
plug PhilomenaWeb.ContentSecurityPolicyPlug
2019-11-17 13:18:21 -05:00
plug PhilomenaWeb.CurrentFilterPlug
plug PhilomenaWeb.ImageFilterPlug
plug PhilomenaWeb.PaginationPlug
plug PhilomenaWeb.EnsureUserEnabledPlug
plug PhilomenaWeb.CurrentBanPlug
plug PhilomenaWeb.NotificationCountPlug
2019-11-18 12:32:23 -05:00
plug PhilomenaWeb.SiteNoticePlug
2019-11-27 21:57:25 -05:00
plug PhilomenaWeb.ForumListPlug
2019-11-17 14:47:01 -05:00
plug PhilomenaWeb.FilterSelectPlug
2019-11-30 01:30:45 -05:00
plug PhilomenaWeb.ChannelPlug
2019-12-04 18:15:54 -05:00
plug PhilomenaWeb.AdminCountersPlug
2019-08-14 20:32:32 -04:00
end
2019-12-03 19:50:23 -05:00
pipeline :api do
2019-11-30 18:11:24 -05:00
plug PhilomenaWeb.ApiTokenPlug
plug PhilomenaWeb.EnsureUserEnabledPlug
plug PhilomenaWeb.CurrentFilterPlug
2019-12-03 20:00:48 -05:00
plug PhilomenaWeb.FilterIdPlug
2019-11-30 18:11:24 -05:00
plug PhilomenaWeb.ImageFilterPlug
plug PhilomenaWeb.PaginationPlug
end
2019-12-03 19:50:23 -05:00
pipeline :accepts_rss do
plug :accepts, ["rss"]
end
pipeline :accepts_json do
2019-08-14 20:32:32 -04:00
plug :accepts, ["json"]
end
2019-11-12 22:12:46 -05:00
pipeline :ensure_totp do
2019-11-17 13:18:21 -05:00
plug PhilomenaWeb.TotpPlug
2019-11-12 22:12:46 -05:00
end
2019-11-12 23:49:37 -05:00
pipeline :protected do
plug Pow.Plug.RequireAuthenticated,
error_handler: Pow.Phoenix.PlugErrorHandler
end
2019-10-31 13:57:39 -04:00
scope "/" do
2019-11-12 22:12:46 -05:00
pipe_through [:browser, :ensure_totp]
2019-10-31 13:57:39 -04:00
2019-11-15 10:15:21 -05:00
pow_routes()
2019-11-12 22:12:46 -05:00
pow_extension_routes()
2019-10-31 13:57:39 -04:00
end
2019-08-17 14:58:36 -04:00
2019-08-14 20:32:32 -04:00
scope "/", PhilomenaWeb do
2019-11-13 00:28:02 -05:00
pipe_through [:browser, :protected]
2019-11-12 22:12:46 -05:00
# Additional routes for TOTP
2019-11-14 21:40:35 -05:00
scope "/registrations", Registration, as: :registration do
2019-11-12 22:12:46 -05:00
resources "/totp", TotpController, only: [:edit, :update], singleton: true
end
2019-11-14 21:40:35 -05:00
scope "/sessions", Session, as: :session do
2019-11-12 22:12:46 -05:00
resources "/totp", TotpController, only: [:new, :create], singleton: true
end
2019-11-13 00:28:02 -05:00
end
2019-12-03 19:50:23 -05:00
scope "/api/v1/rss", PhilomenaWeb.Api.Rss, as: :api_rss do
pipe_through [:accepts_rss, :protected, :api]
2019-11-30 18:11:24 -05:00
resources "/watched", WatchedController, only: [:index]
end
2019-12-03 19:50:23 -05:00
scope "/api/v1/json", PhilomenaWeb.Api.Json, as: :api_json do
pipe_through [:accepts_json, :api]
resources "/images", ImageController, only: [:show]
scope "/search", Search, as: :search do
resources "/reverse", ReverseController, only: [:create]
end
resources "/search", SearchController, only: [:index]
2019-12-03 20:27:58 -05:00
resources "/oembed", OembedController, only: [:index]
2019-12-03 19:50:23 -05:00
end
2019-11-15 22:50:58 -05:00
scope "/", PhilomenaWeb do
pipe_through [:browser, :ensure_totp, :protected]
2019-12-02 09:55:48 -05:00
scope "/notifications", Notification, as: :notification do
resources "/unread", UnreadController, only: [:index]
end
2019-11-15 22:50:58 -05:00
resources "/notifications", NotificationController, only: [:index, :delete]
2019-11-18 11:00:08 -05:00
resources "/conversations", ConversationController, only: [:index, :show, :new, :create] do
2019-12-04 08:19:33 -05:00
resources "/reports", Conversation.ReportController, only: [:new, :create]
2019-11-18 11:00:08 -05:00
resources "/messages", Conversation.MessageController, only: [:create]
end
2019-11-16 21:20:33 -05: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 12:50:42 -05:00
resources "/subscription", Image.SubscriptionController, only: [:create, :delete], singleton: true
resources "/read", Image.ReadController, only: [:create], singleton: true
2019-12-06 09:43:01 -05:00
resources "/comments", Image.CommentController, only: [:edit, :update]
2019-11-16 21:20:33 -05:00
end
2019-11-17 13:05:50 -05:00
resources "/forums", ForumController, only: [] do
2019-11-18 22:38:22 -05:00
resources "/topics", TopicController, only: [:new, :create] do
2019-11-17 13:05:50 -05:00
resources "/subscription", Topic.SubscriptionController, only: [:create, :delete], singleton: true
resources "/read", Topic.ReadController, only: [:create], singleton: true
2019-12-06 10:14:25 -05:00
resources "/posts", Topic.PostController, only: [:edit, :update]
2019-11-17 13:05:50 -05:00
end
resources "/subscription", Forum.SubscriptionController, only: [:create, :delete], singleton: true
resources "/read", Forum.ReadController, only: [:create], singleton: true
2019-11-17 13:05:50 -05:00
end
2019-11-17 14:47:01 -05:00
2019-12-04 09:28:17 -05:00
resources "/profiles", ProfileController, only: [] do
2019-12-04 12:14:41 -05:00
resources "/commission", Profile.CommissionController, only: [:new, :create, :edit, :update, :delete], singleton: true do
resources "/items", Profile.Commission.ItemController, only: [:new, :create, :edit, :update, :delete]
resources "/reports", Profile.Commission.ReportController, only: [:new, :create]
end
resources "/description", Profile.DescriptionController, only: [:edit, :update], singleton: true
2019-12-04 09:28:17 -05:00
end
2019-11-17 14:47:01 -05:00
scope "/filters", Filter, as: :filter do
resources "/spoiler_type", SpoilerTypeController, only: [:update], singleton: true
2019-12-06 12:12:55 -05:00
resources "/hide", HideController, only: [:create, :delete], singleton: true
resources "/spoiler", SpoilerController, only: [:create, :delete], singleton: true
end
resources "/tags", TagController, only: [] do
resources "/watch", Tag.WatchController, only: [:create, :delete], singleton: true
2019-11-17 14:47:01 -05:00
end
2019-12-03 23:14:56 -05:00
2019-12-07 11:26:45 -05:00
resources "/avatar", AvatarController, only: [:edit, :update, :delete], singleton: true
2019-12-03 23:14:56 -05:00
resources "/reports", ReportController, only: [:index]
2019-12-04 09:04:25 -05:00
resources "/user_links", UserLinkController, only: [:index, :new, :create, :show]
2019-12-04 23:12:49 -05:00
resources "/galleries", GalleryController, only: [:new, :create, :edit, :update, :delete] do
resources "/images", Gallery.ImageController, only: [:create, :delete], singleton: true
resources "/order", Gallery.OrderController, only: [:update], singleton: true
resources "/read", Gallery.ReadController, only: [:create], singleton: true
resources "/subscription", Gallery.SubscriptionController, only: [:create, :delete], singleton: true
end
2019-12-04 23:27:40 -05:00
resources "/channels", ChannelController, only: [] do
resources "/read", Channel.ReadController, only: [:create], singleton: true
resources "/subscription", Channel.SubscriptionController, only: [:create, :delete], singleton: true
end
2019-11-15 22:50:58 -05:00
end
2019-11-13 00:28:02 -05:00
scope "/", PhilomenaWeb do
pipe_through [:browser, :ensure_totp]
2019-08-14 20:32:32 -04:00
2019-10-04 12:48:00 -04:00
get "/", ActivityController, :index
2019-08-18 12:17:05 -04:00
2019-10-08 19:19:57 -04:00
resources "/activity", ActivityController, only: [:index]
2019-11-28 18:19:47 -05:00
scope "/images", Image, as: :image do
resources "/scrape", ScrapeController, only: [:create]
2019-11-30 00:40:37 -05:00
resources "/random", RandomController, only: [:index]
2019-11-28 18:19:47 -05:00
end
2019-11-25 23:51:17 -05:00
resources "/images", ImageController, only: [:index, :show, :new, :create] do
2019-12-04 08:13:10 -05:00
resources "/comments", Image.CommentController, only: [:index, :show, :create] do
resources "/reports", Image.Comment.ReportController, only: [:new, :create]
2019-12-05 21:46:51 -05:00
resources "/history", Image.Comment.HistoryController, only: [:index]
2019-12-04 08:13:10 -05:00
end
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-29 00:39:15 -05:00
resources "/description", Image.DescriptionController, only: [:update], singleton: true
2019-11-29 21:33:15 -05:00
resources "/navigate", Image.NavigateController, only: [:index]
2019-12-03 23:14:56 -05:00
resources "/reports", Image.ReportController, only: [:new, :create]
resources "/reporting", Image.ReportingController, only: [:show], singleton: true
resources "/favorites", Image.FavoritesController, only: [:index]
2019-11-11 21:38:51 -05:00
end
2019-11-26 21:19:07 -05:00
scope "/tags", Tag, as: :tag do
resources "/autocomplete", AutocompleteController, only: [:show], singleton: true
2019-12-01 12:26:14 -05:00
resources "/fetch", FetchController, only: [:index]
2019-11-26 21:19:07 -05:00
end
2019-12-04 17:10:35 -05:00
resources "/tags", TagController, only: [:index, :show] do
resources "/tag_changes", Tag.TagChangeController, only: [:index]
end
2019-11-28 19:11:05 -05:00
scope "/search", Search, as: :search do
resources "/reverse", ReverseController, only: [:index, :create]
end
2019-08-28 21:33:58 -04:00
resources "/search", SearchController, only: [:index]
2019-10-06 17:31:48 -04:00
resources "/forums", ForumController, only: [:index, :show] do
2019-11-17 22:31:28 -05:00
resources "/topics", TopicController, only: [:show] do
2019-12-04 08:13:10 -05:00
resources "/posts", Topic.PostController, only: [:create] do
resources "/reports", Topic.Post.ReportController, only: [:new, :create]
2019-12-06 08:58:34 -05:00
resources "/history", Topic.Post.HistoryController, only: [:index]
2019-12-04 08:13:10 -05:00
end
2019-11-17 22:31:28 -05:00
end
2019-10-06 17:31:48 -04:00
end
2019-11-11 22:10:41 -05:00
resources "/comments", CommentController, only: [:index]
2019-08-18 14:14:36 -04:00
2019-10-08 20:45:04 -04:00
scope "/filters", Filter, as: :filter do
2019-11-12 22:12:46 -05:00
resources "/current", CurrentController, only: [:update], singleton: true
2019-10-08 20:45:04 -04:00
end
2019-10-09 11:51:14 -04:00
resources "/filters", FilterController
2019-12-04 08:25:10 -05:00
resources "/profiles", ProfileController, only: [:show] do
resources "/reports", Profile.ReportController, only: [:new, :create]
2019-12-04 09:28:17 -05:00
resources "/commission", Profile.CommissionController, only: [:show], singleton: true
2019-12-04 17:10:35 -05:00
resources "/tag_changes", Profile.TagChangeController, only: [:index]
2019-12-04 17:56:13 -05:00
resources "/source_changes", Profile.SourceChangeController, only: [:index]
2019-12-04 08:25:10 -05:00
end
2019-11-13 11:28:02 -05:00
resources "/captchas", CaptchaController, only: [:create]
scope "/posts", Post, as: :post do
resources "/preview", PreviewController, only: [:create]
end
2019-11-17 17:14:20 -05:00
resources "/posts", PostController, only: [:index]
2019-12-04 12:14:41 -05:00
resources "/commissions", CommissionController, only: [:index]
2019-12-04 23:12:49 -05:00
resources "/galleries", GalleryController, only: [:index, :show] do
resources "/reports", Gallery.ReportController, only: [:new, :create]
end
2019-11-29 01:26:05 -05:00
resources "/adverts", AdvertController, only: [:show]
2019-12-06 13:06:54 -05:00
resources "/pages", PageController, only: [:show] do
resources "/history", Page.HistoryController, only: [:index]
end
2019-11-29 16:47:41 -05:00
resources "/dnp", DnpEntryController, only: [:index, :show]
2019-11-29 17:01:54 -05:00
resources "/staff", StaffController, only: [:index]
2019-11-29 17:45:44 -05:00
resources "/stats", StatController, only: [:index]
2019-11-30 01:30:45 -05:00
resources "/channels", ChannelController, only: [:index, :show]
2019-11-30 17:40:53 -05:00
resources "/settings", SettingController, only: [:edit, :update], singleton: true
2019-12-03 23:14:56 -05:00
resources "/duplicate_reports", DuplicateReportController, only: [:index, :show, :create]
2019-10-08 20:45:04 -04:00
2019-08-18 14:14:36 -04:00
get "/:id", ImageController, :show
# 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 12:12:10 -05:00
get "/:forum_id/:id/post/:post_id", TopicController, :show
2019-08-14 20:32:32 -04:00
end
# Other scopes may use custom stacks.
# scope "/api", PhilomenaWeb do
# pipe_through :api
# end
end