diff --git a/lib/frenzy/user.ex b/lib/frenzy/user.ex index 5163951..bbeb54c 100644 --- a/lib/frenzy/user.ex +++ b/lib/frenzy/user.ex @@ -12,6 +12,7 @@ defmodule Frenzy.User do has_many :approved_clients, Frenzy.ApprovedClient, on_delete: :delete_all has_many :groups, Frenzy.Group, on_delete: :delete_all + has_many :feeds, through: [:groups, :feeds] timestamps() end diff --git a/lib/frenzy_web/controllers/fervor/items_controller.ex b/lib/frenzy_web/controllers/fervor/items_controller.ex index 0383aa7..e59fbe1 100644 --- a/lib/frenzy_web/controllers/fervor/items_controller.ex +++ b/lib/frenzy_web/controllers/fervor/items_controller.ex @@ -7,13 +7,11 @@ defmodule FrenzyWeb.Fervor.ItemsController do plug :get_specific_item def get_specific_item(%Plug.Conn{path_params: %{"id" => id}} = conn, _opts) do - user = conn.assigns[:user] |> Repo.preload(groups: [:feeds]) - - feeds = Enum.flat_map(user.groups, fn g -> g.feeds end) + user = conn.assigns[:user] |> Repo.preload(:feeds) item = Repo.get(Item, id) - if Enum.any?(feeds, fn f -> f.id == item.feed_id end) do + if Enum.any?(user.feeds, fn f -> f.id == item.feed_id end) do assign(conn, :item, item) else conn diff --git a/lib/frenzy_web/controllers/item_controller.ex b/lib/frenzy_web/controllers/item_controller.ex index 3eb09c6..6061ed7 100644 --- a/lib/frenzy_web/controllers/item_controller.ex +++ b/lib/frenzy_web/controllers/item_controller.ex @@ -10,9 +10,7 @@ defmodule FrenzyWeb.ItemController do item = Repo.get(Item, id) - feeds = Enum.flat_map(user.groups, fn g -> g.feeds end) - - if Enum.any?(feeds, fn f -> f.id == item.feed_id end) do + if Enum.any?(user.feeds, fn f -> f.id == item.feed_id end) do conn |> assign(:item, item) else diff --git a/lib/frenzy_web/plug/authenticate.ex b/lib/frenzy_web/plug/authenticate.ex index 8ad335a..1bce44a 100644 --- a/lib/frenzy_web/plug/authenticate.ex +++ b/lib/frenzy_web/plug/authenticate.ex @@ -25,7 +25,7 @@ defmodule FrenzyWeb.Plug.Authenticate do |> halt() user -> - user = Repo.preload(user, groups: [:feeds]) + user = Repo.preload(user, [:groups, :feeds]) assign(conn, :user, user) end end