diff options
| author | Star Rauchenberger <fefferburbia@gmail.com> | 2023-10-17 11:43:07 -0400 |
|---|---|---|
| committer | Star Rauchenberger <fefferburbia@gmail.com> | 2023-10-17 11:43:07 -0400 |
| commit | 8d039903f630db0b89f2df44a94f4e5c938bd7bf (patch) | |
| tree | 80d33266fff46582bc4ea7d1fc31f7b73efca965 | |
| parent | 4369be26b98e874ec560f92b6fd204deca8bd609 (diff) | |
| download | thoughts-8d039903f630db0b89f2df44a94f4e5c938bd7bf.tar.gz thoughts-8d039903f630db0b89f2df44a94f4e5c938bd7bf.tar.bz2 thoughts-8d039903f630db0b89f2df44a94f4e5c938bd7bf.zip | |
Added marking comments as spam
| -rw-r--r-- | app/controllers/admin/comments_controller.rb | 23 | ||||
| -rw-r--r-- | app/controllers/comments_controller.rb | 7 | ||||
| -rw-r--r-- | app/views/admin/comments/pending.haml | 1 | ||||
| -rw-r--r-- | config/routes.rb | 1 | ||||
| -rw-r--r-- | db/migrate/20231017153558_add_more_comment_columns.rb | 9 | ||||
| -rw-r--r-- | db/schema.rb | 5 |
6 files changed, 43 insertions, 3 deletions
| diff --git a/app/controllers/admin/comments_controller.rb b/app/controllers/admin/comments_controller.rb index 9958232..d3d948c 100644 --- a/app/controllers/admin/comments_controller.rb +++ b/app/controllers/admin/comments_controller.rb | |||
| @@ -31,6 +31,29 @@ class Admin::CommentsController < Admin::AdminController | |||
| 31 | redirect_to pending_admin_comments_url | 31 | redirect_to pending_admin_comments_url |
| 32 | end | 32 | end |
| 33 | 33 | ||
| 34 | def mark_spam | ||
| 35 | @comment = Comment.find(params[:id]) | ||
| 36 | |||
| 37 | akismet_params = { | ||
| 38 | type: "comment", | ||
| 39 | text: @comment.body, | ||
| 40 | created_at: @comment.created_at, | ||
| 41 | author: @comment.username, | ||
| 42 | author_email: @comment.email, | ||
| 43 | author_url: @comment.website, | ||
| 44 | post_url: url_for(@comment.blog), | ||
| 45 | post_modified_at: @comment.blog.updated_at, | ||
| 46 | referrer: @comment.referrer | ||
| 47 | } | ||
| 48 | |||
| 49 | Akismet.spam @comment.request_ip, @comment.user_agent, akismet_params | ||
| 50 | |||
| 51 | @comment.destroy! | ||
| 52 | |||
| 53 | flash.notice = "Comment successfully marked as spam." | ||
| 54 | redirect_back pending_admin_comments_url | ||
| 55 | end | ||
| 56 | |||
| 34 | def destroy | 57 | def destroy |
| 35 | if Comment.destroy(params[:id]) | 58 | if Comment.destroy(params[:id]) |
| 36 | flash.notice = "Comment successfully deleted." | 59 | flash.notice = "Comment successfully deleted." |
| diff --git a/app/controllers/comments_controller.rb b/app/controllers/comments_controller.rb index 2f3117f..9fa05e4 100644 --- a/app/controllers/comments_controller.rb +++ b/app/controllers/comments_controller.rb | |||
| @@ -6,6 +6,9 @@ class CommentsController < ApplicationController | |||
| 6 | raise ActiveRecord::RecordNotFound unless @blog.published | 6 | raise ActiveRecord::RecordNotFound unless @blog.published |
| 7 | 7 | ||
| 8 | @comment = @blog.comments.new(comment_params) | 8 | @comment = @blog.comments.new(comment_params) |
| 9 | @comment.request_ip = request.ip | ||
| 10 | @comment.user_agent = request.user_agent | ||
| 11 | @comment.referrer = request.referrer | ||
| 9 | 12 | ||
| 10 | unless @comment.valid? | 13 | unless @comment.valid? |
| 11 | flash.alert = "Error posting comment." | 14 | flash.alert = "Error posting comment." |
| @@ -23,11 +26,11 @@ class CommentsController < ApplicationController | |||
| 23 | author_url: @comment.website, | 26 | author_url: @comment.website, |
| 24 | post_url: url_for(@comment.blog), | 27 | post_url: url_for(@comment.blog), |
| 25 | post_modified_at: @comment.blog.updated_at, | 28 | post_modified_at: @comment.blog.updated_at, |
| 26 | referrer: request.referrer, | 29 | referrer: @comment.referrer, |
| 27 | env: request.env.slice(*akismet_vars) | 30 | env: request.env.slice(*akismet_vars) |
| 28 | } | 31 | } |
| 29 | 32 | ||
| 30 | is_spam, is_blatant = Akismet.check(request.ip, request.user_agent, akismet_params) | 33 | is_spam, is_blatant = Akismet.check(@comment.ip, @comment.user_agent, akismet_params) |
| 31 | 34 | ||
| 32 | if is_blatant | 35 | if is_blatant |
| 33 | # I am lying. | 36 | # I am lying. |
| diff --git a/app/views/admin/comments/pending.haml b/app/views/admin/comments/pending.haml index 18ae6c2..3303457 100644 --- a/app/views/admin/comments/pending.haml +++ b/app/views/admin/comments/pending.haml | |||
| @@ -22,4 +22,5 @@ | |||
| 22 | %ul.admin-actions | 22 | %ul.admin-actions |
| 23 | %li= link_to "Accept", accept_admin_comment_url(comment), method: :post, data: { confirm: "Are you sure you want to accept this comment?" } | 23 | %li= link_to "Accept", accept_admin_comment_url(comment), method: :post, data: { confirm: "Are you sure you want to accept this comment?" } |
| 24 | %li= link_to "Reject", reject_admin_comment_url(comment), method: :post, data: { confirm: "Are you sure you want to reject this comment?" } | 24 | %li= link_to "Reject", reject_admin_comment_url(comment), method: :post, data: { confirm: "Are you sure you want to reject this comment?" } |
| 25 | %li= link_to "Mark Spam", mark_spam_admin_comment_url(comment), method: :post, data: { confirm: "Are you sure you want to mark this comment as spam?" } | ||
| 25 | = will_paginate @comments | 26 | = will_paginate @comments |
| diff --git a/config/routes.rb b/config/routes.rb index 4b68dc3..416e939 100644 --- a/config/routes.rb +++ b/config/routes.rb | |||
| @@ -24,6 +24,7 @@ Rails.application.routes.draw do | |||
| 24 | member do | 24 | member do |
| 25 | post 'accept' | 25 | post 'accept' |
| 26 | post 'reject' | 26 | post 'reject' |
| 27 | post 'mark_spam' | ||
| 27 | end | 28 | end |
| 28 | end | 29 | end |
| 29 | end | 30 | end |
| diff --git a/db/migrate/20231017153558_add_more_comment_columns.rb b/db/migrate/20231017153558_add_more_comment_columns.rb new file mode 100644 index 0000000..9ce3e07 --- /dev/null +++ b/db/migrate/20231017153558_add_more_comment_columns.rb | |||
| @@ -0,0 +1,9 @@ | |||
| 1 | class AddMoreCommentColumns < ActiveRecord::Migration[7.0] | ||
| 2 | def change | ||
| 3 | change_table :comments do |t| | ||
| 4 | t.string :request_ip | ||
| 5 | t.string :user_agent | ||
| 6 | t.string :referrer | ||
| 7 | end | ||
| 8 | end | ||
| 9 | end | ||
| diff --git a/db/schema.rb b/db/schema.rb index edbb24e..3a9e111 100644 --- a/db/schema.rb +++ b/db/schema.rb | |||
| @@ -10,7 +10,7 @@ | |||
| 10 | # | 10 | # |
| 11 | # It's strongly recommended that you check this file into your version control system. | 11 | # It's strongly recommended that you check this file into your version control system. |
| 12 | 12 | ||
| 13 | ActiveRecord::Schema[7.0].define(version: 2023_10_14_194459) do | 13 | ActiveRecord::Schema[7.0].define(version: 2023_10_17_153558) do |
| 14 | create_table "active_storage_attachments", force: :cascade do |t| | 14 | create_table "active_storage_attachments", force: :cascade do |t| |
| 15 | t.string "name", null: false | 15 | t.string "name", null: false |
| 16 | t.string "record_type", null: false | 16 | t.string "record_type", null: false |
| @@ -97,6 +97,9 @@ ActiveRecord::Schema[7.0].define(version: 2023_10_14_194459) do | |||
| 97 | t.datetime "created_at", null: false | 97 | t.datetime "created_at", null: false |
| 98 | t.datetime "updated_at", null: false | 98 | t.datetime "updated_at", null: false |
| 99 | t.integer "reply_to_id" | 99 | t.integer "reply_to_id" |
| 100 | t.string "request_ip" | ||
| 101 | t.string "user_agent" | ||
| 102 | t.string "referrer" | ||
| 100 | t.index ["blog_id"], name: "index_comments_on_blog_id" | 103 | t.index ["blog_id"], name: "index_comments_on_blog_id" |
| 101 | t.index ["reply_to_id"], name: "index_comments_on_reply_to_id" | 104 | t.index ["reply_to_id"], name: "index_comments_on_reply_to_id" |
| 102 | end | 105 | end |
