mirror of
https://github.com/discourse/discourse.git
synced 2025-05-21 18:12:32 +08:00
Support for Embeddable Comments via IFRAME
This commit is contained in:
34
app/controllers/embed_controller.rb
Normal file
34
app/controllers/embed_controller.rb
Normal file
@ -0,0 +1,34 @@
|
||||
class EmbedController < ApplicationController
|
||||
skip_before_filter :check_xhr
|
||||
skip_before_filter :preload_json
|
||||
before_filter :ensure_embeddable
|
||||
|
||||
layout 'embed'
|
||||
|
||||
def best
|
||||
embed_url = params.require(:embed_url)
|
||||
topic_id = TopicEmbed.topic_id_for_embed(embed_url)
|
||||
|
||||
if topic_id
|
||||
@topic_view = TopicView.new(topic_id, current_user, {best: 5})
|
||||
else
|
||||
Jobs.enqueue(:retrieve_topic, user_id: current_user.try(:id), embed_url: embed_url)
|
||||
render 'loading'
|
||||
end
|
||||
|
||||
discourse_expires_in 1.minute
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def ensure_embeddable
|
||||
raise Discourse::InvalidAccess.new('embeddable host not set') if SiteSetting.embeddable_host.blank?
|
||||
raise Discourse::InvalidAccess.new('invalid referer host') if URI(request.referer || '').host != SiteSetting.embeddable_host
|
||||
|
||||
response.headers['X-Frame-Options'] = "ALLOWALL"
|
||||
rescue URI::InvalidURIError
|
||||
raise Discourse::InvalidAccess.new('invalid referer host')
|
||||
end
|
||||
|
||||
|
||||
end
|
Reference in New Issue
Block a user