From 87d2732915cd970296e73527590e466eeb9a731f Mon Sep 17 00:00:00 2001 From: Antonio Terceiro Date: Sat, 25 Aug 2012 16:04:17 -0300 Subject: [PATCH] Store User-Agent and Referre on comments --- app/controllers/public/content_viewer_controller.rb | 2 ++ db/migrate/20120825185219_add_user_agent_and_referrer_to_comments.rb | 11 +++++++++++ db/schema.rb | 4 +++- test/functional/content_viewer_controller_test.rb | 6 +++++- test/unit/comment_test.rb | 10 ++++++++++ 5 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 db/migrate/20120825185219_add_user_agent_and_referrer_to_comments.rb diff --git a/app/controllers/public/content_viewer_controller.rb b/app/controllers/public/content_viewer_controller.rb index 0569b44..9a695d4 100644 --- a/app/controllers/public/content_viewer_controller.rb +++ b/app/controllers/public/content_viewer_controller.rb @@ -127,6 +127,8 @@ class ContentViewerController < ApplicationController @comment.author = user if logged_in? @comment.article = @page @comment.ip_address = request.remote_ip + @comment.user_agent = request.user_agent + @comment.referrer = request.referrer plugins_filter_comment(@comment) return if @comment.rejected? if (pass_without_comment_captcha? || verify_recaptcha(:model => @comment, :message => _('Please type the words correctly'))) && @comment.save diff --git a/db/migrate/20120825185219_add_user_agent_and_referrer_to_comments.rb b/db/migrate/20120825185219_add_user_agent_and_referrer_to_comments.rb new file mode 100644 index 0000000..8affc8b --- /dev/null +++ b/db/migrate/20120825185219_add_user_agent_and_referrer_to_comments.rb @@ -0,0 +1,11 @@ +class AddUserAgentAndReferrerToComments < ActiveRecord::Migration + def self.up + add_column :comments, :user_agent, :string + add_column :comments, :referrer, :string + end + + def self.down + remove_column :comments, :user_agent + remove_column :comments, :referrer + end +end diff --git a/db/schema.rb b/db/schema.rb index 37680ca..ba8d295 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -9,7 +9,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20120818030329) do +ActiveRecord::Schema.define(:version => 20120825185219) do create_table "abuse_reports", :force => true do |t| t.integer "reporter_id" @@ -213,6 +213,8 @@ ActiveRecord::Schema.define(:version => 20120818030329) do t.string "ip_address" t.boolean "spam" t.string "source_type" + t.string "user_agent" + t.string "referrer" end create_table "contact_lists", :force => true do |t| diff --git a/test/functional/content_viewer_controller_test.rb b/test/functional/content_viewer_controller_test.rb index fe3c080..da9753d 100644 --- a/test/functional/content_viewer_controller_test.rb +++ b/test/functional/content_viewer_controller_test.rb @@ -1375,12 +1375,16 @@ end assert_not_nil assigns(:comment) end - should 'store IP address for comments' do + should 'store IP address, user agent and referrer for comments' do page = profile.articles.create!(:name => 'myarticle', :body => 'the body of the text') @request.stubs(:remote_ip).returns('33.44.55.66') + @request.stubs(:referrer).returns('http://example.com') + @request.stubs(:user_agent).returns('MyBrowser') post :view_page, :profile => profile.identifier, :page => [ 'myarticle' ], :comment => { :title => 'title', :body => 'body', :name => "Spammer", :email => 'damn@spammer.com' }, :confirm => 'true' comment = Comment.last assert_equal '33.44.55.66', comment.ip_address + assert_equal 'MyBrowser', comment.user_agent + assert_equal 'http://example.com', comment.referrer end should 'not save a comment if a plugin rejects it' do diff --git a/test/unit/comment_test.rb b/test/unit/comment_test.rb index cbcd09f..cbab01e 100644 --- a/test/unit/comment_test.rb +++ b/test/unit/comment_test.rb @@ -536,6 +536,16 @@ class CommentTest < ActiveSupport::TestCase assert_equal c, SpamNotification.marked_as_ham end + should 'store User-Agent' do + c = Comment.new(:user_agent => 'foo') + assert_equal 'foo', c.user_agent + end + + should 'store referrer' do + c = Comment.new(:referrer => 'bar') + assert_equal 'bar', c.referrer + end + private def create_comment(args = {}) -- libgit2 0.21.2