mirror of
https://github.com/philomena-dev/philomena.git
synced 2025-02-01 03:46:44 +01:00
Fixup polls
This commit is contained in:
parent
e704319dd9
commit
2a89162cba
1 changed files with 7 additions and 19 deletions
|
@ -2,32 +2,20 @@ defmodule PhilomenaWeb.LoadPollPlug do
|
|||
alias Philomena.Polls.Poll
|
||||
alias Philomena.Repo
|
||||
|
||||
import Plug.Conn, only: [assign: 3]
|
||||
import Canada.Can, only: [can?: 3]
|
||||
import Ecto.Query
|
||||
|
||||
def init(opts),
|
||||
do: opts
|
||||
|
||||
def call(%{assigns: %{topic: topic}} = conn, opts) do
|
||||
show_hidden = Keyword.get(opts, :show_hidden, false)
|
||||
def init(opts), do: opts
|
||||
|
||||
def call(%{assigns: %{topic: topic}} = conn, _opts) do
|
||||
Poll
|
||||
|> where(topic_id: ^topic.id)
|
||||
|> Repo.one()
|
||||
|> maybe_hide_poll(conn, show_hidden)
|
||||
end
|
||||
|> case do
|
||||
nil ->
|
||||
PhilomenaWeb.NotFoundPlug.call(conn)
|
||||
|
||||
defp maybe_hide_poll(nil, conn, _show_hidden),
|
||||
do: PhilomenaWeb.NotFoundPlug.call(conn)
|
||||
|
||||
defp maybe_hide_poll(%{hidden_from_users: false} = poll, conn, _show_hidden),
|
||||
do: assign(conn, :poll, poll)
|
||||
|
||||
defp maybe_hide_poll(poll, %{assigns: %{current_user: user}} = conn, show_hidden) do
|
||||
case show_hidden or can?(user, :show, poll) do
|
||||
true -> assign(conn, :poll, poll)
|
||||
false -> PhilomenaWeb.NotAuthorizedPlug.call(conn)
|
||||
poll ->
|
||||
Plug.Conn.assign(conn, :poll, poll)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue