Commit 87d2732915cd970296e73527590e466eeb9a731f

Authored by Antonio Terceiro
1 parent 5944bfde

Store User-Agent and Referre on comments

app/controllers/public/content_viewer_controller.rb
@@ -127,6 +127,8 @@ class ContentViewerController < ApplicationController @@ -127,6 +127,8 @@ class ContentViewerController < ApplicationController
127 @comment.author = user if logged_in? 127 @comment.author = user if logged_in?
128 @comment.article = @page 128 @comment.article = @page
129 @comment.ip_address = request.remote_ip 129 @comment.ip_address = request.remote_ip
  130 + @comment.user_agent = request.user_agent
  131 + @comment.referrer = request.referrer
130 plugins_filter_comment(@comment) 132 plugins_filter_comment(@comment)
131 return if @comment.rejected? 133 return if @comment.rejected?
132 if (pass_without_comment_captcha? || verify_recaptcha(:model => @comment, :message => _('Please type the words correctly'))) && @comment.save 134 if (pass_without_comment_captcha? || verify_recaptcha(:model => @comment, :message => _('Please type the words correctly'))) && @comment.save
db/migrate/20120825185219_add_user_agent_and_referrer_to_comments.rb 0 → 100644
@@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
  1 +class AddUserAgentAndReferrerToComments < ActiveRecord::Migration
  2 + def self.up
  3 + add_column :comments, :user_agent, :string
  4 + add_column :comments, :referrer, :string
  5 + end
  6 +
  7 + def self.down
  8 + remove_column :comments, :user_agent
  9 + remove_column :comments, :referrer
  10 + end
  11 +end
@@ -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 => 20120818030329) do 12 +ActiveRecord::Schema.define(:version => 20120825185219) 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"
@@ -213,6 +213,8 @@ ActiveRecord::Schema.define(:version =&gt; 20120818030329) do @@ -213,6 +213,8 @@ ActiveRecord::Schema.define(:version =&gt; 20120818030329) do
213 t.string "ip_address" 213 t.string "ip_address"
214 t.boolean "spam" 214 t.boolean "spam"
215 t.string "source_type" 215 t.string "source_type"
  216 + t.string "user_agent"
  217 + t.string "referrer"
216 end 218 end
217 219
218 create_table "contact_lists", :force => true do |t| 220 create_table "contact_lists", :force => true do |t|
test/functional/content_viewer_controller_test.rb
@@ -1375,12 +1375,16 @@ end @@ -1375,12 +1375,16 @@ end
1375 assert_not_nil assigns(:comment) 1375 assert_not_nil assigns(:comment)
1376 end 1376 end
1377 1377
1378 - should 'store IP address for comments' do 1378 + should 'store IP address, user agent and referrer for comments' do
1379 page = profile.articles.create!(:name => 'myarticle', :body => 'the body of the text') 1379 page = profile.articles.create!(:name => 'myarticle', :body => 'the body of the text')
1380 @request.stubs(:remote_ip).returns('33.44.55.66') 1380 @request.stubs(:remote_ip).returns('33.44.55.66')
  1381 + @request.stubs(:referrer).returns('http://example.com')
  1382 + @request.stubs(:user_agent).returns('MyBrowser')
1381 post :view_page, :profile => profile.identifier, :page => [ 'myarticle' ], :comment => { :title => 'title', :body => 'body', :name => "Spammer", :email => 'damn@spammer.com' }, :confirm => 'true' 1383 post :view_page, :profile => profile.identifier, :page => [ 'myarticle' ], :comment => { :title => 'title', :body => 'body', :name => "Spammer", :email => 'damn@spammer.com' }, :confirm => 'true'
1382 comment = Comment.last 1384 comment = Comment.last
1383 assert_equal '33.44.55.66', comment.ip_address 1385 assert_equal '33.44.55.66', comment.ip_address
  1386 + assert_equal 'MyBrowser', comment.user_agent
  1387 + assert_equal 'http://example.com', comment.referrer
1384 end 1388 end
1385 1389
1386 should 'not save a comment if a plugin rejects it' do 1390 should 'not save a comment if a plugin rejects it' do
test/unit/comment_test.rb
@@ -536,6 +536,16 @@ class CommentTest &lt; ActiveSupport::TestCase @@ -536,6 +536,16 @@ class CommentTest &lt; ActiveSupport::TestCase
536 assert_equal c, SpamNotification.marked_as_ham 536 assert_equal c, SpamNotification.marked_as_ham
537 end 537 end
538 538
  539 + should 'store User-Agent' do
  540 + c = Comment.new(:user_agent => 'foo')
  541 + assert_equal 'foo', c.user_agent
  542 + end
  543 +
  544 + should 'store referrer' do
  545 + c = Comment.new(:referrer => 'bar')
  546 + assert_equal 'bar', c.referrer
  547 + end
  548 +
539 private 549 private
540 550
541 def create_comment(args = {}) 551 def create_comment(args = {})