feat(pastes): implement editing for logged in users
Signed-off-by: SphericalKat <amolele@gmail.com>
This commit is contained in:
6 files changed
+63
-12
No files matched your search
@@ -15,16 +15,29 @@ defmodule KetbinWeb.PageController do
|
||||
def show(conn, %{"id" => id}) do
|
||||
paste = Pastes.get_paste!(id) # fetch paste from db
|
||||
|
||||
# pull off current user if exists
|
||||
current_user = conn.assigns.current_user
|
||||
|
||||
# show edit if current user matches creator of paste
|
||||
show_edit = current_user && current_user.id || false
|
||||
|
||||
if paste.is_url do # paste is a url, redirect
|
||||
redirect(conn, external: paste.content)
|
||||
else # regular paste, show content
|
||||
render(conn, "show.html", paste: paste)
|
||||
render(conn, "show.html", paste: paste, show_edit: show_edit)
|
||||
end
|
||||
end
|
||||
|
||||
def showlink(conn, %{"id" => id}) do
|
||||
paste = Pastes.get_paste!(id)
|
||||
render(conn, "show.html", paste: paste)
|
||||
|
||||
# pull off current user if exists
|
||||
current_user = conn.assigns.current_user
|
||||
|
||||
# show edit if current user matches creator of paste
|
||||
show_edit = current_user && current_user.id || false
|
||||
|
||||
render(conn, "show.html", paste: paste, show_edit: show_edit)
|
||||
end
|
||||
|
||||
def raw(conn, %{"id" => id}) do
|
||||
@@ -48,7 +61,7 @@ defmodule KetbinWeb.PageController do
|
||||
paste_params =
|
||||
Map.put(paste_params, "id", id)
|
||||
|> Map.put("is_url", is_url)
|
||||
|> Map.put("belongs_to", (if current_user, do: current_user.id, else: nil))
|
||||
|> Map.put("belongs_to", current_user && current_user.id)
|
||||
|
||||
# attempt to create a paste
|
||||
case Pastes.create_paste(paste_params) do
|
||||
@@ -65,4 +78,24 @@ defmodule KetbinWeb.PageController do
|
||||
render(conn, "index.html", changeset: changeset)
|
||||
end
|
||||
end
|
||||
|
||||
def edit(conn, %{"id" => id}) do
|
||||
paste = Pastes.get_paste!(id)
|
||||
changeset = Pastes.change_paste(paste)
|
||||
render(conn, "edit.html", paste: paste, changeset: changeset)
|
||||
end
|
||||
|
||||
def update(conn, %{"id" => id, "paste" => paste_params}) do
|
||||
paste = Pastes.get_paste!(id)
|
||||
|
||||
case Pastes.update_paste(paste, paste_params) do
|
||||
{:ok, paste} ->
|
||||
conn
|
||||
|> put_flash(:info, "Paste updated successfully.")
|
||||
|> redirect(to: Routes.page_path(conn, :show, paste))
|
||||
|
||||
{:error, %Ecto.Changeset{} = changeset} ->
|
||||
render(conn, "edit.html", paste: paste, changeset: changeset)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,4 +1,5 @@
|
||||
defmodule KetbinWeb.UserAuth do
|
||||
require Logger
|
||||
import Plug.Conn
|
||||
import Phoenix.Controller
|
||||
|
||||
@@ -94,6 +95,11 @@ defmodule KetbinWeb.UserAuth do
|
||||
assign(conn, :current_user, user)
|
||||
end
|
||||
|
||||
def owns_paste(%{assigns: %{current_user: user}} = conn, _params) do
|
||||
Logger.info("USER: #{inspect(user)}")
|
||||
conn
|
||||
end
|
||||
|
||||
defp ensure_user_token(conn) do
|
||||
if user_token = get_session(conn, :user_token) do
|
||||
{user_token, conn}
|
||||
|
||||
Reference in new issue
Block a user