diff --git a/app/controllers/site_controller.rb b/app/controllers/site_controller.rb index f73a568f0..dbbeab8e7 100644 --- a/app/controllers/site_controller.rb +++ b/app/controllers/site_controller.rb @@ -3,6 +3,7 @@ require_dependency 'site_serializer' class SiteController < ApplicationController layout false skip_before_filter :preload_json, :check_xhr + skip_before_filter :redirect_to_login_if_required, only: ['basic_info'] def site render json: Site.json_for(guardian) @@ -23,4 +24,22 @@ class SiteController < ApplicationController def emoji render json: custom_emoji end + + def basic_info + results = { + logo_url: UrlHelper.absolute(SiteSetting.logo_url), + logo_small_url: UrlHelper.absolute(SiteSetting.logo_small_url), + apple_touch_icon_url: UrlHelper.absolute(SiteSetting.apple_touch_icon_url), + favicon_url: UrlHelper.absolute(SiteSetting.favicon_url), + title: SiteSetting.title, + description: SiteSetting.site_description + } + + if SiteSetting.mobile_logo_url.present? + results[:mobile_logo_url] = SiteSetting.mobile_logo_url + end + + # this info is always available cause it can be scraped from a 404 page + render json: results + end end diff --git a/config/routes.rb b/config/routes.rb index 2dc78c946..784e79598 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -45,6 +45,9 @@ Discourse::Application.routes.draw do get "banner" get "emoji" end + + get "site/basic-info" => 'site#basic_info' + get "site_customizations/:key" => "site_customizations#show" resources :forums diff --git a/spec/controllers/site_controller_spec.rb b/spec/controllers/site_controller_spec.rb new file mode 100644 index 000000000..5e328f5a3 --- /dev/null +++ b/spec/controllers/site_controller_spec.rb @@ -0,0 +1,27 @@ +require 'rails_helper' + +describe SiteController do + describe '.basic_info' do + + it 'is visible always even for sites requiring login' do + SiteSetting.login_required = true + + SiteSetting.title = "Hammer Time" + SiteSetting.site_description= "A time for Hammer" + SiteSetting.logo_url = "/uploads/logo.png" + SiteSetting.logo_small_url = "http://boom.com/uploads/logo_small.png" + SiteSetting.apple_touch_icon_url = "https://boom.com/apple/logo.png" + SiteSetting.mobile_logo_url = "https://a.a/a.png" + + xhr :get, :basic_info + json = JSON.parse(response.body) + + expect(json["title"]).to eq("Hammer Time") + expect(json["description"]).to eq("A time for Hammer") + expect(json["logo_url"]).to eq("http://test.localhost/uploads/logo.png") + expect(json["apple_touch_icon_url"]).to eq("https://boom.com/apple/logo.png") + expect(json["logo_small_url"]).to eq("http://boom.com/uploads/logo_small.png") + expect(json["mobile_logo_url"]).to eq("https://a.a/a.png") + end + end +end