FIX: do not log personal message view if there exists a similar log in previous hour

This commit is contained in:
Arpit Jalan 2018-03-11 09:21:46 +05:30
parent 12706c4b29
commit f862122978
2 changed files with 14 additions and 1 deletions

View File

@ -496,7 +496,10 @@ class TopicView
raise Discourse::InvalidAccess.new("can't see #{@topic}", @topic) unless @guardian.can_see?(@topic)
# log personal message views
if SiteSetting.log_personal_messages_views && @topic.present? && @topic.private_message? && @topic.all_allowed_users.where(id: @user.id).blank?
StaffActionLogger.new(@user).log_check_personal_message(@topic)
last_pm_log = UserHistory.where(acting_user_id: @user.id, action: UserHistory.actions[:check_personal_message], topic_id: @topic.id).last
unless last_pm_log.present? && last_pm_log.created_at > 1.hour.ago
StaffActionLogger.new(@user).log_check_personal_message(@topic)
end
end
end

View File

@ -143,6 +143,16 @@ describe TopicView do
expect { TopicView.new(private_message.id, Fabricate(:user)) }.to raise_error(Discourse::InvalidAccess)
expect(UserHistory.where(action: UserHistory.actions[:check_personal_message]).count).to eq(0)
end
it "does not log personal message view if there exists a similar log in previous hour" do
2.times { TopicView.new(private_message.id, evil_trout) }
expect(UserHistory.where(action: UserHistory.actions[:check_personal_message]).count).to eq(1)
freeze_time (2.hours.from_now)
TopicView.new(private_message.id, evil_trout)
expect(UserHistory.where(action: UserHistory.actions[:check_personal_message]).count).to eq(2)
end
end
it "provides an absolute url" do