diff --git a/lib/philomena_web/controllers/admin/advert/image_controller.ex b/lib/philomena_web/controllers/admin/advert/image_controller.ex index c3bae8c0..7eacf39e 100644 --- a/lib/philomena_web/controllers/admin/advert/image_controller.ex +++ b/lib/philomena_web/controllers/admin/advert/image_controller.ex @@ -19,9 +19,10 @@ defmodule PhilomenaWeb.Admin.Advert.ImageController do def update(conn, %{"advert" => advert_params}) do case Adverts.update_advert_image(conn.assigns.advert, advert_params) do - {:ok, _advert} -> + {:ok, advert} -> conn |> put_flash(:info, "Advert was successfully updated.") + |> moderation_log(details: &log_details/2, data: advert) |> redirect(to: ~p"/admin/adverts") {:error, changeset} -> @@ -35,4 +36,8 @@ defmodule PhilomenaWeb.Admin.Advert.ImageController do _false -> PhilomenaWeb.NotAuthorizedPlug.call(conn) end end + + defp log_details(_action, advert) do + %{body: "Updated image for advert #{advert.id}", subject_path: ~p"/admin/adverts"} + end end diff --git a/lib/philomena_web/controllers/admin/advert_controller.ex b/lib/philomena_web/controllers/admin/advert_controller.ex index 12b1dfbe..4c3236c7 100644 --- a/lib/philomena_web/controllers/admin/advert_controller.ex +++ b/lib/philomena_web/controllers/admin/advert_controller.ex @@ -29,9 +29,10 @@ defmodule PhilomenaWeb.Admin.AdvertController do def create(conn, %{"advert" => advert_params}) do case Adverts.create_advert(advert_params) do - {:ok, _advert} -> + {:ok, advert} -> conn |> put_flash(:info, "Advert was successfully created.") + |> moderation_log(details: &log_details/2, data: advert) |> redirect(to: ~p"/admin/adverts") {:error, changeset} -> @@ -46,9 +47,10 @@ defmodule PhilomenaWeb.Admin.AdvertController do def update(conn, %{"advert" => advert_params}) do case Adverts.update_advert(conn.assigns.advert, advert_params) do - {:ok, _advert} -> + {:ok, advert} -> conn |> put_flash(:info, "Advert was successfully updated.") + |> moderation_log(details: &log_details/2, data: advert) |> redirect(to: ~p"/admin/adverts") {:error, changeset} -> @@ -57,10 +59,11 @@ defmodule PhilomenaWeb.Admin.AdvertController do end def delete(conn, _params) do - {:ok, _advert} = Adverts.delete_advert(conn.assigns.advert) + {:ok, advert} = Adverts.delete_advert(conn.assigns.advert) conn |> put_flash(:info, "Advert was successfully deleted.") + |> moderation_log(details: &log_details/2, data: advert) |> redirect(to: ~p"/admin/adverts") end @@ -70,4 +73,15 @@ defmodule PhilomenaWeb.Admin.AdvertController do false -> PhilomenaWeb.NotAuthorizedPlug.call(conn) end end + + defp log_details(action, advert) do + body = + case action do + :create -> "Created advert #{advert.id}" + :update -> "Updated advert #{advert.id}" + :delete -> "Deleted advert #{advert.id}" + end + + %{body: body, subject_path: ~p"/admin/adverts"} + end end diff --git a/lib/philomena_web/controllers/admin/badge/image_controller.ex b/lib/philomena_web/controllers/admin/badge/image_controller.ex index 069b8f0b..c37407a7 100644 --- a/lib/philomena_web/controllers/admin/badge/image_controller.ex +++ b/lib/philomena_web/controllers/admin/badge/image_controller.ex @@ -14,9 +14,10 @@ defmodule PhilomenaWeb.Admin.Badge.ImageController do def update(conn, %{"badge" => badge_params}) do case Badges.update_badge_image(conn.assigns.badge, badge_params) do - {:ok, _badge} -> + {:ok, badge} -> conn |> put_flash(:info, "Badge updated successfully.") + |> moderation_log(details: &log_details/2, data: badge) |> redirect(to: ~p"/admin/badges") {:error, :badge, changeset, _changes} -> @@ -30,4 +31,8 @@ defmodule PhilomenaWeb.Admin.Badge.ImageController do _false -> PhilomenaWeb.NotAuthorizedPlug.call(conn) end end + + defp log_details(_action, badge) do + %{body: "Updated image of badge '#{badge.title}'", subject_path: ~p"/admin/badges"} + end end diff --git a/lib/philomena_web/controllers/admin/badge_controller.ex b/lib/philomena_web/controllers/admin/badge_controller.ex index f253f647..d80bc008 100644 --- a/lib/philomena_web/controllers/admin/badge_controller.ex +++ b/lib/philomena_web/controllers/admin/badge_controller.ex @@ -25,9 +25,10 @@ defmodule PhilomenaWeb.Admin.BadgeController do def create(conn, %{"badge" => badge_params}) do case Badges.create_badge(badge_params) do - {:ok, _badge} -> + {:ok, badge} -> conn |> put_flash(:info, "Badge created successfully.") + |> moderation_log(details: &log_details/2, data: badge) |> redirect(to: ~p"/admin/badges") {:error, :badge, changeset, _changes} -> @@ -42,9 +43,10 @@ defmodule PhilomenaWeb.Admin.BadgeController do def update(conn, %{"badge" => badge_params}) do case Badges.update_badge(conn.assigns.badge, badge_params) do - {:ok, _badge} -> + {:ok, badge} -> conn |> put_flash(:info, "Badge updated successfully.") + |> moderation_log(details: &log_details/2, data: badge) |> redirect(to: ~p"/admin/badges") {:error, :badge, changeset, _changes} -> @@ -58,4 +60,14 @@ defmodule PhilomenaWeb.Admin.BadgeController do _false -> PhilomenaWeb.NotAuthorizedPlug.call(conn) end end + + defp log_details(action, badge) do + body = + case action do + :create -> "Created badge '#{badge.title}'" + :update -> "Updated badge '#{badge.title}'" + end + + %{body: body, subject_path: ~p"/admin/badges"} + end end diff --git a/lib/philomena_web/controllers/admin/user/activation_controller.ex b/lib/philomena_web/controllers/admin/user/activation_controller.ex index f261ab1b..f19073fa 100644 --- a/lib/philomena_web/controllers/admin/user/activation_controller.ex +++ b/lib/philomena_web/controllers/admin/user/activation_controller.ex @@ -12,6 +12,7 @@ defmodule PhilomenaWeb.Admin.User.ActivationController do conn |> put_flash(:info, "User was reactivated.") + |> moderation_log(details: &log_details/2, data: user) |> redirect(to: ~p"/profiles/#{user}") end @@ -20,6 +21,7 @@ defmodule PhilomenaWeb.Admin.User.ActivationController do conn |> put_flash(:info, "User was deactivated.") + |> moderation_log(details: &log_details/2, data: user) |> redirect(to: ~p"/profiles/#{user}") end @@ -29,4 +31,14 @@ defmodule PhilomenaWeb.Admin.User.ActivationController do _false -> PhilomenaWeb.NotAuthorizedPlug.call(conn) end end + + defp log_details(action, user) do + body = + case action do + :create -> "Reactivated #{user.name}" + :delete -> "Deactivated #{user.name}" + end + + %{body: body, subject_path: ~p"/profiles/#{user}"} + end end diff --git a/lib/philomena_web/controllers/admin/user/api_key_controller.ex b/lib/philomena_web/controllers/admin/user/api_key_controller.ex index 19b1eb64..f855819b 100644 --- a/lib/philomena_web/controllers/admin/user/api_key_controller.ex +++ b/lib/philomena_web/controllers/admin/user/api_key_controller.ex @@ -12,6 +12,7 @@ defmodule PhilomenaWeb.Admin.User.ApiKeyController do conn |> put_flash(:info, "API token successfully reset.") + |> moderation_log(details: &log_details/2, data: user) |> redirect(to: ~p"/profiles/#{user}") end @@ -21,4 +22,8 @@ defmodule PhilomenaWeb.Admin.User.ApiKeyController do _false -> PhilomenaWeb.NotAuthorizedPlug.call(conn) end end + + defp log_details(_action, user) do + %{body: "Reset API key for #{user.name}", subject_path: ~p"/profiles/#{user}"} + end end diff --git a/lib/philomena_web/controllers/admin/user/avatar_controller.ex b/lib/philomena_web/controllers/admin/user/avatar_controller.ex index 80c1e262..79eba114 100644 --- a/lib/philomena_web/controllers/admin/user/avatar_controller.ex +++ b/lib/philomena_web/controllers/admin/user/avatar_controller.ex @@ -8,10 +8,11 @@ defmodule PhilomenaWeb.Admin.User.AvatarController do plug :load_resource, model: User, id_name: "user_id", id_field: "slug", persisted: true def delete(conn, _params) do - {:ok, _user} = Users.remove_avatar(conn.assigns.user) + {:ok, user} = Users.remove_avatar(conn.assigns.user) conn |> put_flash(:info, "Successfully removed avatar.") + |> moderation_log(details: &log_details/2, data: user) |> redirect(to: ~p"/admin/users/#{conn.assigns.user}/edit") end @@ -21,4 +22,8 @@ defmodule PhilomenaWeb.Admin.User.AvatarController do _false -> PhilomenaWeb.NotAuthorizedPlug.call(conn) end end + + defp log_details(_action, user) do + %{body: "Removed avatar for #{user.name}", subject_path: ~p"/profiles/#{user}"} + end end diff --git a/lib/philomena_web/controllers/admin/user/downvote_controller.ex b/lib/philomena_web/controllers/admin/user/downvote_controller.ex index df5cb145..a982c0a5 100644 --- a/lib/philomena_web/controllers/admin/user/downvote_controller.ex +++ b/lib/philomena_web/controllers/admin/user/downvote_controller.ex @@ -8,11 +8,14 @@ defmodule PhilomenaWeb.Admin.User.DownvoteController do plug :load_resource, model: User, id_name: "user_id", id_field: "slug", persisted: true def delete(conn, _params) do - Exq.enqueue(Exq, "indexing", UserUnvoteWorker, [conn.assigns.user.id, false]) + user = conn.assigns.user + + Exq.enqueue(Exq, "indexing", UserUnvoteWorker, [user.id, false]) conn |> put_flash(:info, "Downvote wipe started.") - |> redirect(to: ~p"/profiles/#{conn.assigns.user}") + |> moderation_log(details: &log_details/2, data: user) + |> redirect(to: ~p"/profiles/#{user}") end defp verify_authorized(conn, _opts) do @@ -21,4 +24,8 @@ defmodule PhilomenaWeb.Admin.User.DownvoteController do _false -> PhilomenaWeb.NotAuthorizedPlug.call(conn) end end + + defp log_details(_action, user) do + %{body: "Wiped downvotes for #{user.name}", subject_path: ~p"/profiles/#{user}"} + end end diff --git a/lib/philomena_web/controllers/admin/user/erase_controller.ex b/lib/philomena_web/controllers/admin/user/erase_controller.ex index f0a926df..d2f8af5a 100644 --- a/lib/philomena_web/controllers/admin/user/erase_controller.ex +++ b/lib/philomena_web/controllers/admin/user/erase_controller.ex @@ -26,6 +26,7 @@ defmodule PhilomenaWeb.Admin.User.EraseController do conn |> put_flash(:info, "User erase started") + |> moderation_log(details: &log_details/2, data: {conn.assigns.user, user}) |> redirect(to: ~p"/profiles/#{user}") end @@ -68,4 +69,8 @@ defmodule PhilomenaWeb.Admin.User.EraseController do conn end end + + defp log_details(_action, {old_user, new_user}) do + %{body: "Erased #{old_user.name}", subject_path: ~p"/profiles/#{new_user}"} + end end diff --git a/lib/philomena_web/controllers/admin/user/force_filter_controller.ex b/lib/philomena_web/controllers/admin/user/force_filter_controller.ex index 74266ef5..2d50d56f 100644 --- a/lib/philomena_web/controllers/admin/user/force_filter_controller.ex +++ b/lib/philomena_web/controllers/admin/user/force_filter_controller.ex @@ -18,6 +18,7 @@ defmodule PhilomenaWeb.Admin.User.ForceFilterController do conn |> put_flash(:info, "Filter was forced.") + |> moderation_log(details: &log_details/2, data: user) |> redirect(to: ~p"/profiles/#{user}") end @@ -26,6 +27,7 @@ defmodule PhilomenaWeb.Admin.User.ForceFilterController do conn |> put_flash(:info, "Forced filter was removed.") + |> moderation_log(details: &log_details/2, data: user) |> redirect(to: ~p"/profiles/#{user}") end @@ -35,4 +37,14 @@ defmodule PhilomenaWeb.Admin.User.ForceFilterController do _false -> PhilomenaWeb.NotAuthorizedPlug.call(conn) end end + + defp log_details(action, user) do + body = + case action do + :create -> "Forced filter #{user.forced_filter_id} for #{user.name}" + :delete -> "Removed forced filter for #{user.name}" + end + + %{body: body, subject_path: ~p"/profiles/#{user}"} + end end diff --git a/lib/philomena_web/controllers/admin/user/unlock_controller.ex b/lib/philomena_web/controllers/admin/user/unlock_controller.ex index 54610fda..01ed56e0 100644 --- a/lib/philomena_web/controllers/admin/user/unlock_controller.ex +++ b/lib/philomena_web/controllers/admin/user/unlock_controller.ex @@ -12,6 +12,7 @@ defmodule PhilomenaWeb.Admin.User.UnlockController do conn |> put_flash(:info, "User was unlocked.") + |> moderation_log(details: &log_details/2, data: user) |> redirect(to: ~p"/profiles/#{user}") end @@ -21,4 +22,8 @@ defmodule PhilomenaWeb.Admin.User.UnlockController do _false -> PhilomenaWeb.NotAuthorizedPlug.call(conn) end end + + defp log_details(_action, user) do + %{body: "Unlocked #{user.name}", subject_path: ~p"/profiles/#{user}"} + end end diff --git a/lib/philomena_web/controllers/admin/user/vote_controller.ex b/lib/philomena_web/controllers/admin/user/vote_controller.ex index 310f3575..d3730e75 100644 --- a/lib/philomena_web/controllers/admin/user/vote_controller.ex +++ b/lib/philomena_web/controllers/admin/user/vote_controller.ex @@ -8,11 +8,14 @@ defmodule PhilomenaWeb.Admin.User.VoteController do plug :load_resource, model: User, id_name: "user_id", id_field: "slug", persisted: true def delete(conn, _params) do - Exq.enqueue(Exq, "indexing", UserUnvoteWorker, [conn.assigns.user.id, true]) + user = conn.assigns.user + + Exq.enqueue(Exq, "indexing", UserUnvoteWorker, [user.id, true]) conn |> put_flash(:info, "Vote and fave wipe started.") - |> redirect(to: ~p"/profiles/#{conn.assigns.user}") + |> moderation_log(details: &log_details/2, data: user) + |> redirect(to: ~p"/profiles/#{user}") end defp verify_authorized(conn, _opts) do @@ -21,4 +24,8 @@ defmodule PhilomenaWeb.Admin.User.VoteController do _false -> PhilomenaWeb.NotAuthorizedPlug.call(conn) end end + + defp log_details(_action, user) do + %{body: "Wiped votes and faves for #{user.name}", subject_path: ~p"/profiles/#{user}"} + end end diff --git a/lib/philomena_web/controllers/admin/user/wipe_controller.ex b/lib/philomena_web/controllers/admin/user/wipe_controller.ex index 3bc64a82..c079295a 100644 --- a/lib/philomena_web/controllers/admin/user/wipe_controller.ex +++ b/lib/philomena_web/controllers/admin/user/wipe_controller.ex @@ -8,14 +8,17 @@ defmodule PhilomenaWeb.Admin.User.WipeController do plug :load_resource, model: User, id_name: "user_id", id_field: "slug", persisted: true def create(conn, _params) do - Exq.enqueue(Exq, "indexing", UserWipeWorker, [conn.assigns.user.id]) + user = conn.assigns.user + + Exq.enqueue(Exq, "indexing", UserWipeWorker, [user.id]) conn |> put_flash( :info, "PII wipe queued, please verify and then deactivate the account as necessary." ) - |> redirect(to: ~p"/profiles/#{conn.assigns.user}") + |> moderation_log(details: &log_details/2, data: user) + |> redirect(to: ~p"/profiles/#{user}") end defp verify_authorized(conn, _opts) do @@ -24,4 +27,8 @@ defmodule PhilomenaWeb.Admin.User.WipeController do _false -> PhilomenaWeb.NotAuthorizedPlug.call(conn) end end + + defp log_details(_action, user) do + %{body: "Wiped PII for #{user.name}", subject_path: ~p"/profiles/#{user}"} + end end diff --git a/lib/philomena_web/controllers/image/anonymous_controller.ex b/lib/philomena_web/controllers/image/anonymous_controller.ex index e36b5020..69906c05 100644 --- a/lib/philomena_web/controllers/image/anonymous_controller.ex +++ b/lib/philomena_web/controllers/image/anonymous_controller.ex @@ -35,7 +35,7 @@ defmodule PhilomenaWeb.Image.AnonymousController do defp log_details(_action, image) do %{ - body: "Updated anonymity of image >>#{image.id}", + body: "Updated anonymity of image #{image.id}", subject_path: ~p"/images/#{image}" } end diff --git a/lib/philomena_web/controllers/image/comment/approve_controller.ex b/lib/philomena_web/controllers/image/comment/approve_controller.ex index 617d0280..8dce5a81 100644 --- a/lib/philomena_web/controllers/image/comment/approve_controller.ex +++ b/lib/philomena_web/controllers/image/comment/approve_controller.ex @@ -28,7 +28,7 @@ defmodule PhilomenaWeb.Image.Comment.ApproveController do defp log_details(_action, comment) do %{ - body: "Approved comment on image >>#{comment.image_id}", + body: "Approved comment on image #{comment.image_id}", subject_path: ~p"/images/#{comment.image_id}" <> "#comment_#{comment.id}" } end diff --git a/lib/philomena_web/controllers/image/comment/delete_controller.ex b/lib/philomena_web/controllers/image/comment/delete_controller.ex index 2cf8fb39..ac5125d5 100644 --- a/lib/philomena_web/controllers/image/comment/delete_controller.ex +++ b/lib/philomena_web/controllers/image/comment/delete_controller.ex @@ -28,7 +28,7 @@ defmodule PhilomenaWeb.Image.Comment.DeleteController do defp log_details(_action, comment) do %{ - body: "Destroyed comment on image >>#{comment.image_id}", + body: "Destroyed comment on image #{comment.image_id}", subject_path: ~p"/images/#{comment.image_id}" <> "#comment_#{comment.id}" } end diff --git a/lib/philomena_web/controllers/image/comment/hide_controller.ex b/lib/philomena_web/controllers/image/comment/hide_controller.ex index 2fe709a5..b10b3154 100644 --- a/lib/philomena_web/controllers/image/comment/hide_controller.ex +++ b/lib/philomena_web/controllers/image/comment/hide_controller.ex @@ -45,8 +45,8 @@ defmodule PhilomenaWeb.Image.Comment.HideController do defp log_details(action, comment) do body = case action do - :create -> "Hidden comment on image >>#{comment.image_id} (#{comment.deletion_reason})" - :delete -> "Restored comment on image >>#{comment.image_id}" + :create -> "Hidden comment on image #{comment.image_id} (#{comment.deletion_reason})" + :delete -> "Restored comment on image #{comment.image_id}" end %{ diff --git a/lib/philomena_web/controllers/image/comment_lock_controller.ex b/lib/philomena_web/controllers/image/comment_lock_controller.ex index 432d1283..303f9f42 100644 --- a/lib/philomena_web/controllers/image/comment_lock_controller.ex +++ b/lib/philomena_web/controllers/image/comment_lock_controller.ex @@ -28,8 +28,8 @@ defmodule PhilomenaWeb.Image.CommentLockController do defp log_details(action, image) do body = case action do - :create -> "Locked comments on image >>#{image.id}" - :delete -> "Unlocked comments on image >>#{image.id}" + :create -> "Locked comments on image #{image.id}" + :delete -> "Unlocked comments on image #{image.id}" end %{ diff --git a/lib/philomena_web/controllers/image/delete_controller.ex b/lib/philomena_web/controllers/image/delete_controller.ex index c6b22d54..06cf7f87 100644 --- a/lib/philomena_web/controllers/image/delete_controller.ex +++ b/lib/philomena_web/controllers/image/delete_controller.ex @@ -73,9 +73,9 @@ defmodule PhilomenaWeb.Image.DeleteController do defp log_details(action, image) do body = case action do - :create -> "Hidden image >>#{image.id} (#{image.deletion_reason})" - :update -> "Changed hide reason of >>#{image.id} (#{image.deletion_reason})" - :delete -> "Restored image >>#{image.id}" + :create -> "Hidden image #{image.id} (#{image.deletion_reason})" + :update -> "Changed hide reason of #{image.id} (#{image.deletion_reason})" + :delete -> "Restored image #{image.id}" end %{ diff --git a/lib/philomena_web/controllers/image/description_lock_controller.ex b/lib/philomena_web/controllers/image/description_lock_controller.ex index 9065ff6d..599d0aa2 100644 --- a/lib/philomena_web/controllers/image/description_lock_controller.ex +++ b/lib/philomena_web/controllers/image/description_lock_controller.ex @@ -28,8 +28,8 @@ defmodule PhilomenaWeb.Image.DescriptionLockController do defp log_details(action, image) do body = case action do - :create -> "Locked description editing on image >>#{image.id}" - :delete -> "Unlocked description editing on image >>#{image.id}" + :create -> "Locked description editing on image #{image.id}" + :delete -> "Unlocked description editing on image #{image.id}" end %{ diff --git a/lib/philomena_web/controllers/image/destroy_controller.ex b/lib/philomena_web/controllers/image/destroy_controller.ex index 8685bc77..ef4dab2a 100644 --- a/lib/philomena_web/controllers/image/destroy_controller.ex +++ b/lib/philomena_web/controllers/image/destroy_controller.ex @@ -40,7 +40,7 @@ defmodule PhilomenaWeb.Image.DestroyController do defp log_details(_action, image) do %{ - body: "Hard-deleted image >>#{image.id}", + body: "Hard-deleted image #{image.id}", subject_path: ~p"/images/#{image}" } end diff --git a/lib/philomena_web/controllers/image/feature_controller.ex b/lib/philomena_web/controllers/image/feature_controller.ex index 74214fcb..49edcd08 100644 --- a/lib/philomena_web/controllers/image/feature_controller.ex +++ b/lib/philomena_web/controllers/image/feature_controller.ex @@ -35,7 +35,7 @@ defmodule PhilomenaWeb.Image.FeatureController do defp log_details(_action, image) do %{ - body: "Featured image >>#{image.id}", + body: "Featured image #{image.id}", subject_path: ~p"/images/#{image}" } end diff --git a/lib/philomena_web/controllers/image/file_controller.ex b/lib/philomena_web/controllers/image/file_controller.ex index f169d2f4..14e2c432 100644 --- a/lib/philomena_web/controllers/image/file_controller.ex +++ b/lib/philomena_web/controllers/image/file_controller.ex @@ -16,6 +16,7 @@ defmodule PhilomenaWeb.Image.FileController do {:ok, image} -> conn |> put_flash(:info, "Successfully updated file.") + |> moderation_log(details: &log_details/2, data: image) |> redirect(to: ~p"/images/#{image}") _error -> @@ -37,4 +38,8 @@ defmodule PhilomenaWeb.Image.FileController do conn end end + + defp log_details(_action, image) do + %{body: "Updated file of image #{image.id}", subject_path: ~p"/images/#{image}"} + end end diff --git a/lib/philomena_web/controllers/image/hash_controller.ex b/lib/philomena_web/controllers/image/hash_controller.ex index ab929724..1e8191ae 100644 --- a/lib/philomena_web/controllers/image/hash_controller.ex +++ b/lib/philomena_web/controllers/image/hash_controller.ex @@ -18,7 +18,7 @@ defmodule PhilomenaWeb.Image.HashController do defp log_details(_action, image) do %{ - body: "Cleared hash of image >>#{image.id}", + body: "Cleared hash of image #{image.id}", subject_path: ~p"/images/#{image}" } end diff --git a/lib/philomena_web/controllers/image/repair_controller.ex b/lib/philomena_web/controllers/image/repair_controller.ex index 972d79df..9dfb0c4e 100644 --- a/lib/philomena_web/controllers/image/repair_controller.ex +++ b/lib/philomena_web/controllers/image/repair_controller.ex @@ -19,7 +19,7 @@ defmodule PhilomenaWeb.Image.RepairController do defp log_details(_action, image) do %{ - body: "Repaired image >>#{image.id}", + body: "Repaired image #{image.id}", subject_path: ~p"/images/#{image}" } end diff --git a/lib/philomena_web/controllers/image/scratchpad_controller.ex b/lib/philomena_web/controllers/image/scratchpad_controller.ex index 56ffe897..3a00b645 100644 --- a/lib/philomena_web/controllers/image/scratchpad_controller.ex +++ b/lib/philomena_web/controllers/image/scratchpad_controller.ex @@ -23,7 +23,7 @@ defmodule PhilomenaWeb.Image.ScratchpadController do defp log_details(_action, image) do %{ - body: "Updated mod notes on image >>#{image.id} (#{image.scratchpad})", + body: "Updated mod notes on image #{image.id} (#{image.scratchpad})", subject_path: ~p"/images/#{image}" } end diff --git a/lib/philomena_web/controllers/image/source_history_controller.ex b/lib/philomena_web/controllers/image/source_history_controller.ex index f82a344f..58964080 100644 --- a/lib/philomena_web/controllers/image/source_history_controller.ex +++ b/lib/philomena_web/controllers/image/source_history_controller.ex @@ -20,7 +20,7 @@ defmodule PhilomenaWeb.Image.SourceHistoryController do defp log_details(_action, image) do %{ - body: "Deleted source history for image >>#{image.id}", + body: "Deleted source history for image #{image.id}", subject_path: ~p"/images/#{image}" } end diff --git a/lib/philomena_web/controllers/image/tag_change_controller.ex b/lib/philomena_web/controllers/image/tag_change_controller.ex index fc35a782..dbcd8055 100644 --- a/lib/philomena_web/controllers/image/tag_change_controller.ex +++ b/lib/philomena_web/controllers/image/tag_change_controller.ex @@ -60,7 +60,7 @@ defmodule PhilomenaWeb.Image.TagChangeController do defp log_details(_action, %{image: image, details: details}) do %{ - body: "Deleted tag change #{details} on >>#{image.id} from history", + body: "Deleted tag change #{details} on image #{image.id} from history", subject_path: ~p"/images/#{image}" } end diff --git a/lib/philomena_web/controllers/image/tag_lock_controller.ex b/lib/philomena_web/controllers/image/tag_lock_controller.ex index 028cbf4c..01846a2f 100644 --- a/lib/philomena_web/controllers/image/tag_lock_controller.ex +++ b/lib/philomena_web/controllers/image/tag_lock_controller.ex @@ -48,9 +48,9 @@ defmodule PhilomenaWeb.Image.TagLockController do defp log_details(action, image) do body = case action do - :create -> "Locked tags on image >>#{image.id}" - :update -> "Updated list of locked tags on image >>#{image.id}" - :delete -> "Unlocked tags on image >>#{image.id}" + :create -> "Locked tags on image #{image.id}" + :update -> "Updated list of locked tags on image #{image.id}" + :delete -> "Unlocked tags on image #{image.id}" end %{ diff --git a/lib/philomena_web/controllers/image/tamper_controller.ex b/lib/philomena_web/controllers/image/tamper_controller.ex index ede16a46..2ee0d33a 100644 --- a/lib/philomena_web/controllers/image/tamper_controller.ex +++ b/lib/philomena_web/controllers/image/tamper_controller.ex @@ -42,7 +42,7 @@ defmodule PhilomenaWeb.Image.TamperController do end %{ - body: "Deleted #{vote_type} by #{data.username} on image >>#{data.image.id}", + body: "Deleted #{vote_type} by #{data.username} on image #{data.image.id}", subject_path: ~p"/images/#{image}" } end diff --git a/lib/philomena_web/controllers/tag/alias_controller.ex b/lib/philomena_web/controllers/tag/alias_controller.ex index b0ed3483..934330f4 100644 --- a/lib/philomena_web/controllers/tag/alias_controller.ex +++ b/lib/philomena_web/controllers/tag/alias_controller.ex @@ -23,6 +23,7 @@ defmodule PhilomenaWeb.Tag.AliasController do {:ok, tag} -> conn |> put_flash(:info, "Tag alias queued.") + |> moderation_log(details: &log_details/2, data: tag) |> redirect(to: ~p"/tags/#{tag}/alias/edit") {:error, changeset} -> @@ -35,6 +36,17 @@ defmodule PhilomenaWeb.Tag.AliasController do conn |> put_flash(:info, "Tag dealias queued.") + |> moderation_log(details: &log_details/2, data: tag) |> redirect(to: ~p"/tags/#{tag}") end + + defp log_details(action, tag) do + body = + case action do + :update -> "Aliased tag '#{tag.name}' into '#{tag.aliased_tag.name}'" + :delete -> "Dealiased tag '#{tag.name}'" + end + + %{body: body, subject_path: ~p"/tags/#{tag}"} + end end diff --git a/lib/philomena_web/controllers/tag_change/full_revert_controller.ex b/lib/philomena_web/controllers/tag_change/full_revert_controller.ex index 2f095715..4fccf7a0 100644 --- a/lib/philomena_web/controllers/tag_change/full_revert_controller.ex +++ b/lib/philomena_web/controllers/tag_change/full_revert_controller.ex @@ -1,6 +1,7 @@ defmodule PhilomenaWeb.TagChange.FullRevertController do use PhilomenaWeb, :controller + alias Philomena.Users alias Philomena.TagChanges.TagChange alias Philomena.TagChanges @@ -28,6 +29,10 @@ defmodule PhilomenaWeb.TagChange.FullRevertController do conn |> put_flash(:info, "Reversion of tag changes enqueued.") + |> moderation_log( + details: &log_details/2, + data: %{user: conn.assigns.current_user, params: params} + ) |> redirect(external: conn.assigns.referrer) end @@ -37,4 +42,22 @@ defmodule PhilomenaWeb.TagChange.FullRevertController do _false -> PhilomenaWeb.NotAuthorizedPlug.call(conn) end end + + defp log_details(_action, data) do + {subject, subject_path} = + case data.params do + %{"user_id" => user_id} -> + user = Users.get_user!(user_id) + + {"user #{user.name}", ~p"/profiles/#{user.name}"} + + %{"ip" => ip} -> + {"ip #{ip}", ~p"/ip_profiles/#{ip}"} + + %{"fingerprint" => fp} -> + {"fingerprint #{fp}", ~p"/fingerprint_profiles/#{fp}"} + end + + %{body: "Reverted all tag changes for #{subject}", subject_path: subject_path} + end end diff --git a/lib/philomena_web/controllers/tag_change/revert_controller.ex b/lib/philomena_web/controllers/tag_change/revert_controller.ex index 84782304..4c6a59df 100644 --- a/lib/philomena_web/controllers/tag_change/revert_controller.ex +++ b/lib/philomena_web/controllers/tag_change/revert_controller.ex @@ -20,6 +20,10 @@ defmodule PhilomenaWeb.TagChange.RevertController do {:ok, tag_changes} -> conn |> put_flash(:info, "Successfully reverted #{length(tag_changes)} tag changes.") + |> moderation_log( + details: &log_details/2, + data: %{user: conn.assigns.current_user, count: length(tag_changes)} + ) |> redirect(external: conn.assigns.referrer) _error -> @@ -35,4 +39,8 @@ defmodule PhilomenaWeb.TagChange.RevertController do _false -> PhilomenaWeb.NotAuthorizedPlug.call(conn) end end + + defp log_details(_action, data) do + %{body: "Reverted #{data.count} tag changes", subject_path: ~p"/profiles/#{data.user}"} + end end