mirror of
https://github.com/philomena-dev/philomena.git
synced 2025-02-01 03:46:44 +01:00
fixes #123, block DNP creation without linked tag
This commit is contained in:
parent
506099189f
commit
a73f270ca6
1 changed files with 19 additions and 8 deletions
|
@ -11,6 +11,7 @@ defmodule PhilomenaWeb.DnpEntryController do
|
||||||
import Ecto.Query
|
import Ecto.Query
|
||||||
|
|
||||||
plug PhilomenaWeb.FilterBannedUsersPlug when action in [:new, :create]
|
plug PhilomenaWeb.FilterBannedUsersPlug when action in [:new, :create]
|
||||||
|
plug :set_tags when action in [:new, :create, :edit, :update, :create]
|
||||||
|
|
||||||
plug :load_and_authorize_resource,
|
plug :load_and_authorize_resource,
|
||||||
model: DnpEntry,
|
model: DnpEntry,
|
||||||
|
@ -83,15 +84,14 @@ defmodule PhilomenaWeb.DnpEntryController do
|
||||||
|
|
||||||
render(conn, "new.html",
|
render(conn, "new.html",
|
||||||
title: "New DNP Listing",
|
title: "New DNP Listing",
|
||||||
changeset: changeset,
|
changeset: changeset
|
||||||
selectable_tags: selectable_tags(conn)
|
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
def create(conn, %{"dnp_entry" => dnp_entry_params}) do
|
def create(conn, %{"dnp_entry" => dnp_entry_params}) do
|
||||||
case DnpEntries.create_dnp_entry(
|
case DnpEntries.create_dnp_entry(
|
||||||
conn.assigns.current_user,
|
conn.assigns.current_user,
|
||||||
selectable_tags(conn),
|
conn.assigns.selectable_tags,
|
||||||
dnp_entry_params
|
dnp_entry_params
|
||||||
) do
|
) do
|
||||||
{:ok, dnp_entry} ->
|
{:ok, dnp_entry} ->
|
||||||
|
@ -100,7 +100,7 @@ defmodule PhilomenaWeb.DnpEntryController do
|
||||||
|> redirect(to: Routes.dnp_entry_path(conn, :show, dnp_entry))
|
|> redirect(to: Routes.dnp_entry_path(conn, :show, dnp_entry))
|
||||||
|
|
||||||
{:error, changeset} ->
|
{:error, changeset} ->
|
||||||
render(conn, "new.html", changeset: changeset, selectable_tags: selectable_tags(conn))
|
render(conn, "new.html", changeset: changeset)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -109,15 +109,14 @@ defmodule PhilomenaWeb.DnpEntryController do
|
||||||
|
|
||||||
render(conn, "edit.html",
|
render(conn, "edit.html",
|
||||||
title: "Editing DNP Listing",
|
title: "Editing DNP Listing",
|
||||||
changeset: changeset,
|
changeset: changeset
|
||||||
selectable_tags: selectable_tags(conn)
|
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
def update(conn, %{"dnp_entry" => dnp_entry_params}) do
|
def update(conn, %{"dnp_entry" => dnp_entry_params}) do
|
||||||
case DnpEntries.update_dnp_entry(
|
case DnpEntries.update_dnp_entry(
|
||||||
conn.assigns.dnp_entry,
|
conn.assigns.dnp_entry,
|
||||||
selectable_tags(conn),
|
conn.assigns.selectable_tags,
|
||||||
dnp_entry_params
|
dnp_entry_params
|
||||||
) do
|
) do
|
||||||
{:ok, dnp_entry} ->
|
{:ok, dnp_entry} ->
|
||||||
|
@ -126,7 +125,7 @@ defmodule PhilomenaWeb.DnpEntryController do
|
||||||
|> redirect(to: Routes.dnp_entry_path(conn, :show, dnp_entry))
|
|> redirect(to: Routes.dnp_entry_path(conn, :show, dnp_entry))
|
||||||
|
|
||||||
{:error, changeset} ->
|
{:error, changeset} ->
|
||||||
render(conn, "edit.html", changeset: changeset, selectable_tags: selectable_tags(conn))
|
render(conn, "edit.html", changeset: changeset)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -174,4 +173,16 @@ defmodule PhilomenaWeb.DnpEntryController do
|
||||||
conn
|
conn
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
defp set_tags(conn, _opts) do
|
||||||
|
tags = selectable_tags(conn)
|
||||||
|
|
||||||
|
case tags do
|
||||||
|
[] ->
|
||||||
|
PhilomenaWeb.NotAuthorizedPlug.call(conn)
|
||||||
|
|
||||||
|
_ ->
|
||||||
|
assign(conn, :selectable_tags, tags)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue