23 lines
778 B
JavaScript
23 lines
778 B
JavaScript
const ROUGHLY_ONE_YEAR_IN_MILLISECONDS = 1000 * 60 * 60 * 24 * 30 * 12
|
|
const COOKIE_NAME = 'christmas_community.guestpassword'
|
|
|
|
module.exports = options => {
|
|
return (req, res, next) => {
|
|
options = options || {}
|
|
let authed = false
|
|
try {
|
|
authed = req.isAuthenticated()
|
|
} catch {
|
|
return res.send('auth fail')
|
|
}
|
|
if (authed) return next()
|
|
if (_CC.config.guestPassword && (req.query.pw === _CC.config.guestPassword || req.cookies[COOKIE_NAME] === _CC.config.guestPassword)) {
|
|
req.user = {
|
|
_id: '_CCUNKNOWN'
|
|
}
|
|
res.cookie(COOKIE_NAME, _CC.config.guestPassword, { maxAge: ROUGHLY_ONE_YEAR_IN_MILLISECONDS })
|
|
return next()
|
|
}
|
|
res.redirect(options.failureRedirect || _CC.config.defaultFailureRedirect)
|
|
}
|
|
}
|