From a9c276ae2f7fc1ad0b8a3e9719d4091181f27064 Mon Sep 17 00:00:00 2001 From: "byte[]" Date: Tue, 3 Dec 2019 20:00:48 -0500 Subject: [PATCH] add filter override param --- lib/philomena_web/plugs/filter_id_plug.ex | 20 ++++++++++++++++++++ lib/philomena_web/router.ex | 1 + 2 files changed, 21 insertions(+) create mode 100644 lib/philomena_web/plugs/filter_id_plug.ex diff --git a/lib/philomena_web/plugs/filter_id_plug.ex b/lib/philomena_web/plugs/filter_id_plug.ex new file mode 100644 index 00000000..1c8f9ef1 --- /dev/null +++ b/lib/philomena_web/plugs/filter_id_plug.ex @@ -0,0 +1,20 @@ +defmodule PhilomenaWeb.FilterIdPlug do + alias Philomena.Filters.Filter + alias Philomena.Repo + + # No options + def init([]), do: false + + def call(conn, _opts) do + filter = load_filter(conn.params) + user = conn.assigns.current_user + + case Canada.Can.can?(user, :show, filter) do + true -> Plug.Conn.assign(conn, :current_filter, filter) + false -> conn + end + end + + defp load_filter(%{"filter_id" => filter_id}), do: Repo.get(Filter, filter_id) + defp load_filter(_params), do: nil +end \ No newline at end of file diff --git a/lib/philomena_web/router.ex b/lib/philomena_web/router.ex index 9b666e64..2128ee9e 100644 --- a/lib/philomena_web/router.ex +++ b/lib/philomena_web/router.ex @@ -25,6 +25,7 @@ defmodule PhilomenaWeb.Router do plug PhilomenaWeb.ApiTokenPlug plug PhilomenaWeb.EnsureUserEnabledPlug plug PhilomenaWeb.CurrentFilterPlug + plug PhilomenaWeb.FilterIdPlug plug PhilomenaWeb.ImageFilterPlug plug PhilomenaWeb.PaginationPlug end