summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app.js79
1 files changed, 43 insertions, 36 deletions
diff --git a/app.js b/app.js
index c5eae2c1..98b2b983 100644
--- a/app.js
+++ b/app.js
@@ -252,87 +252,94 @@ app.post("/temp", urlencodedParser, function (req, res) {
}
}
});
+
+function setReturnToFromReferer(req) {
+ var referer = req.get('referer');
+ if (!req.session) req.session = {};
+ req.session.returnTo = referer;
+}
+
//facebook auth
if (config.facebook) {
- app.get('/auth/facebook',
- passport.authenticate('facebook'));
+ app.get('/auth/facebook', function (req, res, next) {
+ setReturnToFromReferer(req);
+ passport.authenticate('facebook')(req, res, next);
+ });
//facebook auth callback
app.get('/auth/facebook/callback',
passport.authenticate('facebook', {
+ successReturnToOrRedirect: config.serverurl + '/',
failureRedirect: config.serverurl + '/'
- }),
- function (req, res) {
- res.redirect(config.serverurl + '/');
- });
+ }));
}
//twitter auth
if (config.twitter) {
- app.get('/auth/twitter',
- passport.authenticate('twitter'));
+ app.get('/auth/twitter', function (req, res, next) {
+ setReturnToFromReferer(req);
+ passport.authenticate('twitter')(req, res, next);
+ });
//twitter auth callback
app.get('/auth/twitter/callback',
passport.authenticate('twitter', {
+ successReturnToOrRedirect: config.serverurl + '/',
failureRedirect: config.serverurl + '/'
- }),
- function (req, res) {
- res.redirect(config.serverurl + '/');
- });
+ }));
}
//github auth
if (config.github) {
- app.get('/auth/github',
- passport.authenticate('github'));
+ app.get('/auth/github', function (req, res, next) {
+ setReturnToFromReferer(req);
+ passport.authenticate('github')(req, res, next);
+ });
//github auth callback
app.get('/auth/github/callback',
passport.authenticate('github', {
+ successReturnToOrRedirect: config.serverurl + '/',
failureRedirect: config.serverurl + '/'
- }),
- function (req, res) {
- res.redirect(config.serverurl + '/');
- });
+ }));
//github callback actions
app.get('/auth/github/callback/:noteId/:action', response.githubActions);
}
//gitlab auth
if (config.gitlab) {
- app.get('/auth/gitlab',
- passport.authenticate('gitlab'));
+ app.get('/auth/gitlab', function (req, res, next) {
+ setReturnToFromReferer(req);
+ passport.authenticate('gitlab')(req, res, next);
+ });
//gitlab auth callback
app.get('/auth/gitlab/callback',
passport.authenticate('gitlab', {
+ successReturnToOrRedirect: config.serverurl + '/',
failureRedirect: config.serverurl + '/'
- }),
- function (req, res) {
- res.redirect(config.serverurl + '/');
- });
+ }));
//gitlab callback actions
app.get('/auth/gitlab/callback/:noteId/:action', response.gitlabActions);
}
//dropbox auth
if (config.dropbox) {
- app.get('/auth/dropbox',
- passport.authenticate('dropbox-oauth2'));
+ app.get('/auth/dropbox', function (req, res, next) {
+ setReturnToFromReferer(req);
+ passport.authenticate('dropbox-oauth2')(req, res, next);
+ });
//dropbox auth callback
app.get('/auth/dropbox/callback',
passport.authenticate('dropbox-oauth2', {
+ successReturnToOrRedirect: config.serverurl + '/',
failureRedirect: config.serverurl + '/'
- }),
- function (req, res) {
- res.redirect(config.serverurl + '/');
- });
+ }));
}
//google auth
if (config.google) {
- app.get('/auth/google',
- passport.authenticate('google', { scope: ['profile'] }));
+ app.get('/auth/google', function (req, res, next) {
+ setReturnToFromReferer(req);
+ passport.authenticate('google', { scope: ['profile'] })(req, res, next);
+ });
//google auth callback
app.get('/auth/google/callback',
passport.authenticate('google', {
+ successReturnToOrRedirect: config.serverurl + '/',
failureRedirect: config.serverurl + '/'
- }),
- function (req, res) {
- res.redirect(config.serverurl + '/');
- });
+ }));
}
//logout
app.get('/logout', function (req, res) {