diff --git a/app/models/invite_friend.rb b/app/models/invite_friend.rb index 886bb4d..1042fcb 100644 --- a/app/models/invite_friend.rb +++ b/app/models/invite_friend.rb @@ -22,6 +22,14 @@ class InviteFriend < Task TaskMailer.deliver_invitation_notification(task) unless task.friend end + def validate + super + friendemail = friend ? friend.user.email : friend_email + if person && friendemail && person.user.email == friendemail + self.errors.add_to_base(_("You can't invite youself")) + end + end + def perform requestor.add_friend(target, group_for_person) target.add_friend(requestor, group_for_friend) diff --git a/test/functional/friends_controller_test.rb b/test/functional/friends_controller_test.rb index 53f892f..506c918 100644 --- a/test/functional/friends_controller_test.rb +++ b/test/functional/friends_controller_test.rb @@ -151,4 +151,10 @@ class FriendsControllerTest < Test::Unit::TestCase end end + should 'not invite yourself' do + assert_no_difference InviteFriend, :count do + post :invite, :manual_import_addresses => "#{profile.name} <#{profile.user.email}>", :import_from => "manual", :message => "click: ", :confirmation => 1, :wizard => true + end + end + end diff --git a/test/unit/invite_friend_test.rb b/test/unit/invite_friend_test.rb index 76af476..7295305 100644 --- a/test/unit/invite_friend_test.rb +++ b/test/unit/invite_friend_test.rb @@ -137,4 +137,14 @@ class InviteFriendTest < ActiveSupport::TestCase assert_equal :manage_friends, t.permission end + should 'not invite yourself' do + p = create_user('testuser1').person + + task1 = InviteFriend.new(:person => p, :friend => p, :message => 'click here: ') + assert !task1.save + + task2 = InviteFriend.new(:person => p, :friend_name => 'Myself', :friend_email => p.user.email, :message => 'click here: ') + assert !task2.save + end + end -- libgit2 0.21.2