From 6faedfa716679726bc393bed7d8a6b97c51e3591 Mon Sep 17 00:00:00 2001 From: Rafael dos Santos Silva Date: Wed, 3 Aug 2016 01:28:46 -0300 Subject: [PATCH] Rate limit printing --- app/controllers/topics_controller.rb | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/controllers/topics_controller.rb b/app/controllers/topics_controller.rb index 88bd54d758..916a27170a 100644 --- a/app/controllers/topics_controller.rb +++ b/app/controllers/topics_controller.rb @@ -3,6 +3,7 @@ require_dependency 'promotion' require_dependency 'url_helper' require_dependency 'topics_bulk_action' require_dependency 'discourse_event' +require_dependency 'rate_limiter' class TopicsController < ApplicationController before_filter :ensure_logged_in, only: [:timings, @@ -68,6 +69,14 @@ class TopicsController < ApplicationController return redirect_to_correct_topic(topic, opts[:post_number]) if topic && topic.visible end + if opts[:print] + begin + RateLimiter.new(current_user, "print-topic-per-hour", 10, 1.hour).performed! + rescue RateLimiter::LimitExceeded + render_json_error(I18n.t("rate_limiter.slow_down")) + end + end + begin @topic_view = TopicView.new(params[:id] || params[:topic_id], current_user, opts) rescue Discourse::NotFound