Skip to content

Commit 38c79cf

Browse files
Fix auth things some more.
1 parent fe5bdb2 commit 38c79cf

2 files changed

Lines changed: 36 additions & 20 deletions

File tree

controllers/auth.js

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ var verifyPassport = require('../libs/passportVerify').verify;
1616
var cleanFilename = require('../libs/helpers').cleanFilename;
1717
var addSession = require('../libs/modifySessions').add;
1818
var jwt = require('jwt-simple');
19+
var url = require('url');
1920

2021
// Unused but removing it breaks passport
2122
passport.serializeUser(function (aUser, aDone) {
@@ -40,10 +41,26 @@ Strategy.find({}, function (aErr, aStrategies) {
4041
});
4142
});
4243

44+
// Get the referer url for redirect after login/logout
45+
function getRedirect(aReq) {
46+
var referer = aReq.get('Referer');
47+
var redirect = '/';
48+
49+
if (referer) {
50+
referer = url.parse(referer);
51+
if (referer.hostname === aReq.hostname) {
52+
redirect = referer.path;
53+
}
54+
}
55+
56+
return redirect;
57+
}
58+
4359
exports.auth = function (aReq, aRes, aNext) {
4460
var authedUser = aReq.session.user;
4561
var strategy = aReq.body.auth || aReq.params.strategy;
46-
var username = aReq.body.username || aReq.session.username;
62+
var username = aReq.body.username || aReq.session.username ||
63+
(authedUser ? authedUser.name : null);
4764
var authOpts = { failureRedirect: '/register?stratfail' };
4865
var passportKey = aReq._passport.instance._key;
4966

@@ -55,7 +72,7 @@ exports.auth = function (aReq, aRes, aNext) {
5572
}
5673

5774
// Save redirect url from the form submission on the session
58-
aReq.session.redirectTo = aReq.body.redirectTo || '/';
75+
aReq.session.redirectTo = aReq.body.redirectTo || getRedirect(aReq);
5976

6077
function auth() {
6178
var authenticate = null;
@@ -75,11 +92,12 @@ exports.auth = function (aReq, aRes, aNext) {
7592

7693
// Allow a logged in user to add a new strategy
7794
if (strategy && authedUser) {
78-
aReq.session.username = authedUser.name;
7995
aReq.session.newstrategy = strategy;
96+
aReq.session.username = authedUser.name;
8097
} else if (authedUser) {
98+
aRes.redirect(aReq.session.redirectTo || '/');
8199
delete aReq.session.redirectTo;
82-
return aRes.redirect(aReq.body.redirectTo || '/');
100+
return;
83101
}
84102

85103
if (!username) {

controllers/user.js

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -633,22 +633,20 @@ exports.userEditPreferencesPage = function (aReq, aRes, aNext) {
633633
});
634634

635635
// Get OpenId strategies
636-
if (isPro) {
637-
for (name in strategies) {
638-
strategy = strategies[name];
639-
640-
if (!strategy.oauth && name !== defaultStrategy) {
641-
if (userStrats.indexOf(name) > -1) {
642-
options.usedStrategies.push({
643-
'strat': name,
644-
'display': strategy.name
645-
});
646-
} else {
647-
options.openStrategies.push({
648-
'strat': name,
649-
'display': strategy.name
650-
});
651-
}
636+
for (name in strategies) {
637+
strategy = strategies[name];
638+
639+
if (!strategy.oauth && name !== defaultStrategy) {
640+
if (userStrats.indexOf(name) > -1) {
641+
options.usedStrategies.push({
642+
'strat': name,
643+
'display': strategy.name
644+
});
645+
} else {
646+
options.openStrategies.push({
647+
'strat': name,
648+
'display': strategy.name
649+
});
652650
}
653651
}
654652
}

0 commit comments

Comments
 (0)