const utils = require('../utils');
const upload_session = require('../utils/upload_session');
const cookies = require('../utils/cookies');
function get_user_prefs(req, res) {
const default_prefs = {
ads_enabled: 0
};
if (!req.user) {
return utils.resolve(default_prefs);
}
return utils.query(
"SELECT ads_enabled FROM user_prefs WHERE user_id=?",
[req.user.user_id]
).then(([user_prefs]) => user_prefs || default_prefs).catch(
utils.handle_err.sql(res, default_prefs)
).then(function(user_prefs) {
res.locals.log.v("Prefs for", req.user.email, "-", user_prefs);
return user_prefs;
});
}
const routes = [
'login',
'register',
'confirm-email',
'password-reset'
].reduce(function(request_handlers, endpoint) {
const title = endpoint.split('-').map(word => utils.captialize(word)).join(' ');
return Object.assign(request_handlers, {
[endpoint]: [{
auth: false
}, function(req, res) {
res.render(endpoint, {
captcha: true,
ads_enabled: 0,
title: ' - ' + title
});
}]
});
}, {
"": function(req, res) {
// Any time a user visits this page it
// is loading for the first time.
// Hence they have no upload session.
let current_upload_session = upload_session.get(req.user);
if (current_upload_session) {
upload_session.delete(req.user);
utils.rimraf(current_upload_session.temp_dir).catch(res.locals.log.general.error);
}
get_user_prefs(req, res).then(function(prefs) {
res.render('home', {
title: "",
ads_enabled: prefs.ads_enabled,
helpers: {
current_year: () => new Date().getFullYear()
}
});
})
},
"logout": function(req, res) {
if (cookies.get(req, 'cookie_consent')) {
cookies.set(res, 'login_message', {
message: "Logged Out Successfully"
}, {
httpOnly: false
});
}
req.logout();
res.redirect("/login");
}
});
module.exports = {
get: routes
};