2013-02-06 03:16:51 +08:00
|
|
|
class StaticController < ApplicationController
|
|
|
|
|
2013-06-05 06:32:36 +08:00
|
|
|
skip_before_filter :check_xhr, :redirect_to_login_if_required
|
2013-08-27 23:30:58 +08:00
|
|
|
skip_before_filter :verify_authenticity_token, only: [:enter]
|
2013-02-06 03:16:51 +08:00
|
|
|
|
|
|
|
def show
|
|
|
|
|
2013-10-31 04:37:22 +08:00
|
|
|
return redirect_to('/') if current_user && params[:id] == 'login'
|
|
|
|
|
2013-06-27 15:15:59 +08:00
|
|
|
map = {
|
|
|
|
"faq" => "faq_url",
|
|
|
|
"tos" => "tos_url",
|
|
|
|
"privacy" => "privacy_policy_url"
|
|
|
|
}
|
|
|
|
|
2013-02-06 03:16:51 +08:00
|
|
|
page = params[:id]
|
|
|
|
|
2013-06-27 15:15:59 +08:00
|
|
|
if site_setting_key = map[page]
|
|
|
|
url = SiteSetting.send(site_setting_key)
|
|
|
|
return redirect_to(url) unless url.blank?
|
|
|
|
end
|
2013-06-18 22:52:04 +08:00
|
|
|
|
2013-02-06 03:16:51 +08:00
|
|
|
# Don't allow paths like ".." or "/" or anything hacky like that
|
|
|
|
page.gsub!(/[^a-z0-9\_\-]/, '')
|
|
|
|
|
2013-03-03 23:27:32 +08:00
|
|
|
file = "static/#{page}.#{I18n.locale}"
|
|
|
|
|
|
|
|
# if we don't have a localized version, try the English one
|
|
|
|
if not lookup_context.find_all("#{file}.html").any?
|
|
|
|
file = "static/#{page}.en"
|
|
|
|
end
|
|
|
|
|
2013-07-16 18:49:04 +08:00
|
|
|
if not lookup_context.find_all("#{file}.html").any?
|
|
|
|
file = "static/#{page}"
|
|
|
|
end
|
|
|
|
|
2013-03-03 23:27:32 +08:00
|
|
|
if lookup_context.find_all("#{file}.html").any?
|
|
|
|
render file, layout: !request.xhr?, formats: [:html]
|
2013-02-06 03:16:51 +08:00
|
|
|
return
|
|
|
|
end
|
|
|
|
|
2013-05-20 08:29:49 +08:00
|
|
|
raise Discourse::NotFound
|
2013-02-06 03:16:51 +08:00
|
|
|
end
|
|
|
|
|
2013-03-13 22:22:56 +08:00
|
|
|
# This method just redirects to a given url.
|
|
|
|
# It's used when an ajax login was successful but we want the browser to see
|
|
|
|
# a post of a login form so that it offers to remember your password.
|
|
|
|
def enter
|
|
|
|
params.delete(:username)
|
|
|
|
params.delete(:password)
|
|
|
|
|
2013-06-05 06:34:54 +08:00
|
|
|
redirect_to(
|
|
|
|
if params[:redirect].blank? || params[:redirect].match(login_path)
|
2013-07-02 02:00:06 +08:00
|
|
|
"/"
|
2013-06-05 06:34:54 +08:00
|
|
|
else
|
|
|
|
params[:redirect]
|
|
|
|
end
|
|
|
|
)
|
|
|
|
end
|
2014-05-19 06:46:09 +08:00
|
|
|
|
|
|
|
skip_before_filter :verify_authenticity_token, only: [:cdn_asset]
|
|
|
|
def cdn_asset
|
|
|
|
path = params[:path].gsub(/[^a-zA-Z0-9_\-\.]/, "")
|
|
|
|
path = (Rails.root + "public/assets/" + path).to_s
|
|
|
|
expires_in 1.year, public: true
|
|
|
|
response.headers["Access-Control-Allow-Origin"] = params[:origin]
|
|
|
|
opts = {
|
|
|
|
disposition: nil
|
|
|
|
}
|
|
|
|
opts[:type] = "application/x-javascript" if path =~ /\.js$/
|
|
|
|
send_file(path, opts)
|
|
|
|
end
|
2013-02-07 23:45:24 +08:00
|
|
|
end
|