Files
familyARK/familyark/app/node_modules/connect-ensure-login/lib/ensureLoggedIn.js
T
2020-03-31 01:53:06 +02:00

53 lines
1.6 KiB
JavaScript

/**
* Ensure that a user is logged in before proceeding to next route middleware.
*
* This middleware ensures that a user is logged in. If a request is received
* that is unauthenticated, the request will be redirected to a login page (by
* default to `/login`).
*
* Additionally, `returnTo` will be be set in the session to the URL of the
* current request. After authentication, this value can be used to redirect
* the user to the page that was originally requested.
*
* Options:
* - `redirectTo` URL to redirect to for login, defaults to _/login_
* - `setReturnTo` set redirectTo in session, defaults to _true_
*
* Examples:
*
* app.get('/profile',
* ensureLoggedIn(),
* function(req, res) { ... });
*
* app.get('/profile',
* ensureLoggedIn('/signin'),
* function(req, res) { ... });
*
* app.get('/profile',
* ensureLoggedIn({ redirectTo: '/session/new', setReturnTo: false }),
* function(req, res) { ... });
*
* @param {Object} options
* @return {Function}
* @api public
*/
module.exports = function ensureLoggedIn(options) {
if (typeof options == 'string') {
options = { redirectTo: options }
}
options = options || {};
var url = options.redirectTo || '/login';
var setReturnTo = (options.setReturnTo === undefined) ? true : options.setReturnTo;
return function(req, res, next) {
if (!req.isAuthenticated || !req.isAuthenticated()) {
if (setReturnTo && req.session) {
req.session.returnTo = req.originalUrl || req.url;
}
return res.redirect(url);
}
next();
}
}