From 983d3606df2879b6cd704bdc654eb784803ff791 Mon Sep 17 00:00:00 2001 From: Rafael dos Santos Silva Date: Thu, 27 Aug 2015 18:37:52 -0300 Subject: [PATCH 1/3] Fix same domains links on subfolder installs isInternal link handling logic needs to test if the link is inside the same subfolder --- app/assets/javascripts/discourse/lib/url.js.es6 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/discourse/lib/url.js.es6 b/app/assets/javascripts/discourse/lib/url.js.es6 index f94c4c2bd54..b9a56ba4af1 100644 --- a/app/assets/javascripts/discourse/lib/url.js.es6 +++ b/app/assets/javascripts/discourse/lib/url.js.es6 @@ -271,7 +271,7 @@ const DiscourseURL = Ember.Object.createWithMixins({ // This has been extracted so it can be tested. origin: function() { - return window.location.origin; + return Discourse.BaseUrl + Discourse.BaseUri; }, /** From 4e39f9662dba6aaec5c98c6f37b76d6f462ba54c Mon Sep 17 00:00:00 2001 From: Rafael dos Santos Silva Date: Mon, 14 Sep 2015 18:29:39 -0300 Subject: [PATCH 2/3] Rewrite origin so it matches original behavior As suggested by @nlalonde --- app/assets/javascripts/discourse/lib/url.js.es6 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/discourse/lib/url.js.es6 b/app/assets/javascripts/discourse/lib/url.js.es6 index b9a56ba4af1..d7231109e11 100644 --- a/app/assets/javascripts/discourse/lib/url.js.es6 +++ b/app/assets/javascripts/discourse/lib/url.js.es6 @@ -271,7 +271,7 @@ const DiscourseURL = Ember.Object.createWithMixins({ // This has been extracted so it can be tested. origin: function() { - return Discourse.BaseUrl + Discourse.BaseUri; + return window.location.origin + (Discourse.BaseUri === "/" ? '' : Discourse.BaseUri); }, /** From 230bc8bb6eaad3ba8fb6e7a7bc5e756a9012d3be Mon Sep 17 00:00:00 2001 From: Rafael dos Santos Silva Date: Mon, 14 Sep 2015 18:39:54 -0300 Subject: [PATCH 3/3] Add tests to isInternal on subfolder installs --- test/javascripts/lib/url-test.js.es6 | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/javascripts/lib/url-test.js.es6 b/test/javascripts/lib/url-test.js.es6 index 0598c32e543..39941fd00e5 100644 --- a/test/javascripts/lib/url-test.js.es6 +++ b/test/javascripts/lib/url-test.js.es6 @@ -16,3 +16,10 @@ test("isInternal with a HTTPS url", function() { sandbox.stub(DiscourseURL, "origin").returns("https://eviltrout.com"); ok(DiscourseURL.isInternal("http://eviltrout.com/monocle"), "HTTPS urls match HTTP urls"); }); + +test("isInternal on subfolder install", function() { + sandbox.stub(DiscourseURL, "origin").returns("http://eviltrout.com/forum"); + not(DiscourseURL.isInternal("http://eviltrout.com"), "the host root is not internal"); + not(DiscourseURL.isInternal("http://eviltrout.com/tophat"), "a url on the same host but on a different folder is not internal"); + ok(DiscourseURL.isInternal("http://eviltrout.com/forum/moustache"), "a url on the same host and on the same folder is internal"); +});