philomena/lib/philomena_web/controllers/image/uploader_controller.ex
2020-01-10 23:20:19 -05:00

30 lines
875 B
Elixir

defmodule PhilomenaWeb.Image.UploaderController do
use PhilomenaWeb, :controller
alias Philomena.Images.Image
alias Philomena.Images
alias Philomena.Repo
plug :verify_authorized
plug :load_resource, model: Image, id_name: "image_id", persisted: true
def update(conn, %{"image" => image_params}) do
{:ok, image} = Images.update_uploader(conn.assigns.image, image_params)
Images.reindex_image(image)
image = Repo.preload(image, user: [awards: :badge])
changeset = Images.change_image(image)
conn
|> put_view(PhilomenaWeb.ImageView)
|> render("_uploader.html", layout: false, image: image, changeset: changeset)
end
defp verify_authorized(conn, _opts) do
case Canada.Can.can?(conn.assigns.current_user, :show, :ip_address) do
true -> conn
_false -> PhilomenaWeb.NotAuthorizedPlug.call(conn)
end
end
end