From 15a3ed02ba5a519c7ccb95f92bf4290b0300fc59 Mon Sep 17 00:00:00 2001 From: Fabian Jakobs Date: Wed, 28 Oct 2015 14:45:53 +0000 Subject: [PATCH 1/6] logout redirects --- plugins/c9.ide.auth/auth.js | 17 +++-------------- plugins/c9.ide.login/login.js | 6 ++---- 2 files changed, 5 insertions(+), 18 deletions(-) diff --git a/plugins/c9.ide.auth/auth.js b/plugins/c9.ide.auth/auth.js index 0b88d862..c9070189 100644 --- a/plugins/c9.ide.auth/auth.js +++ b/plugins/c9.ide.auth/auth.js @@ -107,20 +107,9 @@ define(function(require, exports, module) { }) || true; } - function logout(callback) { - accessToken = "invalid"; - loggingIn = false; - - http.request("/_auth/logout", function(err1) { - http.request(ideBaseUrl + "/auth/signout", { - method: "POST", - withCredentials: true - }, function(err2) { - loggedIn = false; - emit("logout", {uid: uid, newUid: ANONYMOUS}); - callback && callback(err1 || err2); - }); - }); + function logout(redirect) { + redirect = redirect || window.location.href; + window.location.href = ideBaseUrl + "/auth/signout?redirect=" + encodeURIComponent(redirect); } function createLoopDetector(count, duration) { diff --git a/plugins/c9.ide.login/login.js b/plugins/c9.ide.login/login.js index 817480a5..2f78e138 100644 --- a/plugins/c9.ide.login/login.js +++ b/plugins/c9.ide.login/login.js @@ -137,7 +137,7 @@ define(function(require, exports, module) { function signout() { vfsEndpoint.clearCache(); - auth.logout(function() { location.href = ideBaseUrl; }); + auth.logout(ideBaseUrl); } function onReLogin() { @@ -147,9 +147,7 @@ define(function(require, exports, module) { "Please hit OK to reload the IDE.", function() { vfsEndpoint.clearCache(); - auth.logout(function() { - document.location.reload(); - }); + auth.logout(); }); } } From bcfb026450ca248ece787e0a35fb03539b6dd676 Mon Sep 17 00:00:00 2001 From: Fabian Jakobs Date: Wed, 4 Nov 2015 09:36:28 +0000 Subject: [PATCH 2/6] use setHeader iso writeHead --- .../connect-architect/connect.redirect/redirect.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/node_modules/connect-architect/connect.redirect/redirect.js b/node_modules/connect-architect/connect.redirect/redirect.js index 43b634f6..24b16ef1 100644 --- a/node_modules/connect-architect/connect.redirect/redirect.js +++ b/node_modules/connect-architect/connect.redirect/redirect.js @@ -7,7 +7,8 @@ module.exports = function(options, imports, register) { var trustedDomainsRe = options.trustedDomainsRe || /.*/; imports.connect.addResponseMethod("redirect", function(location) { - this.writeHead(302, {Location: location}); + this.setHeader("Location", location); + this.writeHead(302); this.end(""); }); imports.connect.addResponseMethod("secureRedirect", function(location) { @@ -15,9 +16,8 @@ module.exports = function(options, imports, register) { if (!trustedDomainsRe.test(parsedLocation.host)) location = parsedLocation.path; - - this.writeHead(302, {Location: location}); - this.end(""); + + this.redirect(location); }); imports.connect.addResponseMethod("returnTo", function(req, defaultReturn) { var url = defaultReturn || "/"; From 0a684b889fbbd4ffcdb79e0e71033355af8a9200 Mon Sep 17 00:00:00 2001 From: Fabian Jakobs Date: Wed, 4 Nov 2015 15:26:27 +0000 Subject: [PATCH 3/6] configure secure redirect everywhere --- .../connect-architect/connect.redirect/redirect.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/node_modules/connect-architect/connect.redirect/redirect.js b/node_modules/connect-architect/connect.redirect/redirect.js index 24b16ef1..7e072318 100644 --- a/node_modules/connect-architect/connect.redirect/redirect.js +++ b/node_modules/connect-architect/connect.redirect/redirect.js @@ -21,12 +21,14 @@ module.exports = function(options, imports, register) { }); imports.connect.addResponseMethod("returnTo", function(req, defaultReturn) { var url = defaultReturn || "/"; - if (req.session && req.session.returnTo) { + if (req.parsedUrl && req.parsedUrl.query.redirect) { + url = req.parsedUrl.query.redirect; + } + else if (req.session && req.session.returnTo) { url = req.session.returnTo; delete req.session.returnTo; } - - this.redirect(url); + this.secureRedirect(url); }); imports.connect.addResponseMethod("moved", function(location) { this.writeHead(301, {Location: location}); From dd49a15771b802fdefb697d4c7b54384adab4a21 Mon Sep 17 00:00:00 2001 From: Fabian Jakobs Date: Wed, 4 Nov 2015 15:36:44 +0000 Subject: [PATCH 4/6] use nc plugin for logouts --- plugins/c9.ide.auth/auth.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/c9.ide.auth/auth.js b/plugins/c9.ide.auth/auth.js index c9070189..3bf062db 100644 --- a/plugins/c9.ide.auth/auth.js +++ b/plugins/c9.ide.auth/auth.js @@ -109,7 +109,7 @@ define(function(require, exports, module) { function logout(redirect) { redirect = redirect || window.location.href; - window.location.href = ideBaseUrl + "/auth/signout?redirect=" + encodeURIComponent(redirect); + window.location.href = ideBaseUrl + "/api/nc/logout?redirect=" + encodeURIComponent(redirect); } function createLoopDetector(count, duration) { From 8212e049af19a3d0ef365fc578da57f3a30d062b Mon Sep 17 00:00:00 2001 From: Fabian Jakobs Date: Thu, 5 Nov 2015 09:15:47 +0000 Subject: [PATCH 5/6] assert trustedDomainsRe option --- node_modules/connect-architect/connect.redirect/redirect.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/node_modules/connect-architect/connect.redirect/redirect.js b/node_modules/connect-architect/connect.redirect/redirect.js index 7e072318..9c9e92b4 100644 --- a/node_modules/connect-architect/connect.redirect/redirect.js +++ b/node_modules/connect-architect/connect.redirect/redirect.js @@ -1,10 +1,12 @@ "use strict"; var url = require("url"); +var assert = require("assert"); module.exports = function(options, imports, register) { + assert(options.trustedDomainsRe, "Options 'trustedDomainsRe' must be set"); - var trustedDomainsRe = options.trustedDomainsRe || /.*/; + var trustedDomainsRe = options.trustedDomainsRe; imports.connect.addResponseMethod("redirect", function(location) { this.setHeader("Location", location); From 596486bdfb7e0aef3727bb0c87feea26dfd984ae Mon Sep 17 00:00:00 2001 From: Fabian Jakobs Date: Thu, 5 Nov 2015 09:55:12 +0000 Subject: [PATCH 6/6] fix standalone --- configs/standalone.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/configs/standalone.js b/configs/standalone.js index 1e83ff13..d6611bed 100644 --- a/configs/standalone.js +++ b/configs/standalone.js @@ -132,7 +132,10 @@ module.exports = function(config, optimist) { "connect-architect/connect.remote-address", "connect-architect/connect.render", "connect-architect/connect.render.ejs", - "connect-architect/connect.redirect", + { + packagePath: "connect-architect/connect.redirect", + trustedDomainsRe: /.*/, + }, "connect-architect/connect.cors", "./c9.connect.favicon/favicon", // "./c9.logger/stdout-logger",