Commit e66d26eee064e35d60190a48625f5809aa53eab4
1 parent
9688304f
Exists in
master
and in
29 other branches
Store origin IP address for every comment
I am also already adding a "spam" flag to the table, which we will use next. (ActionItem2309)
Showing
4 changed files
with
24 additions
and
1 deletions
Show diff stats
app/controllers/public/content_viewer_controller.rb
@@ -111,6 +111,7 @@ class ContentViewerController < ApplicationController | @@ -111,6 +111,7 @@ class ContentViewerController < ApplicationController | ||
111 | def add_comment | 111 | def add_comment |
112 | @comment.author = user if logged_in? | 112 | @comment.author = user if logged_in? |
113 | @comment.article = @page | 113 | @comment.article = @page |
114 | + @comment.ip_address = request.remote_ip | ||
114 | if (pass_without_comment_captcha? || verify_recaptcha(:model => @comment, :message => _('Please type the words correctly'))) && @comment.save | 115 | if (pass_without_comment_captcha? || verify_recaptcha(:model => @comment, :message => _('Please type the words correctly'))) && @comment.save |
115 | @page.touch | 116 | @page.touch |
116 | @comment = nil # clear the comment form | 117 | @comment = nil # clear the comment form |
@@ -0,0 +1,11 @@ | @@ -0,0 +1,11 @@ | ||
1 | +class AddIpAddressToComment < ActiveRecord::Migration | ||
2 | + def self.up | ||
3 | + add_column :comments, :ip_address, :string | ||
4 | + add_column :comments, :spam, :boolean | ||
5 | + end | ||
6 | + | ||
7 | + def self.down | ||
8 | + remove_column :comments, :ip_address | ||
9 | + remove_column :comments, :boolean | ||
10 | + end | ||
11 | +end |
db/schema.rb
@@ -9,7 +9,7 @@ | @@ -9,7 +9,7 @@ | ||
9 | # | 9 | # |
10 | # It's strongly recommended to check this file into your version control system. | 10 | # It's strongly recommended to check this file into your version control system. |
11 | 11 | ||
12 | -ActiveRecord::Schema.define(:version => 20111004184104) do | 12 | +ActiveRecord::Schema.define(:version => 20120307200651) do |
13 | 13 | ||
14 | create_table "abuse_reports", :force => true do |t| | 14 | create_table "abuse_reports", :force => true do |t| |
15 | t.integer "reporter_id" | 15 | t.integer "reporter_id" |
@@ -204,6 +204,8 @@ ActiveRecord::Schema.define(:version => 20111004184104) do | @@ -204,6 +204,8 @@ ActiveRecord::Schema.define(:version => 20111004184104) do | ||
204 | t.string "email" | 204 | t.string "email" |
205 | t.datetime "created_at" | 205 | t.datetime "created_at" |
206 | t.integer "reply_of_id" | 206 | t.integer "reply_of_id" |
207 | + t.string "ip_address" | ||
208 | + t.boolean "spam" | ||
207 | end | 209 | end |
208 | 210 | ||
209 | create_table "contact_lists", :force => true do |t| | 211 | create_table "contact_lists", :force => true do |t| |
test/functional/content_viewer_controller_test.rb
@@ -1370,4 +1370,13 @@ class ContentViewerControllerTest < ActionController::TestCase | @@ -1370,4 +1370,13 @@ class ContentViewerControllerTest < ActionController::TestCase | ||
1370 | post :view_page, :profile => profile.identifier, :page => ['test'], :comment => {:body => "Some comment...", :author => profile}, :confirm => 'true' | 1370 | post :view_page, :profile => profile.identifier, :page => ['test'], :comment => {:body => "Some comment...", :author => profile}, :confirm => 'true' |
1371 | assert_not_nil assigns(:comment) | 1371 | assert_not_nil assigns(:comment) |
1372 | end | 1372 | end |
1373 | + | ||
1374 | + should 'store IP address for comments' do | ||
1375 | + page = profile.articles.create!(:name => 'myarticle', :body => 'the body of the text') | ||
1376 | + @request.stubs(:remote_ip).returns('33.44.55.66') | ||
1377 | + post :view_page, :profile => profile.identifier, :page => [ 'myarticle' ], :comment => { :title => 'title', :body => 'body', :name => "Spammer", :email => 'damn@spammer.com' }, :confirm => 'true' | ||
1378 | + comment = Comment.last | ||
1379 | + assert_equal '33.44.55.66', comment.ip_address | ||
1380 | + end | ||
1381 | + | ||
1373 | end | 1382 | end |