127.0.0.1:8000 watch-together / master server / routes / html.js
master

Tree @master (Download .tar.gz)

html.js @masterraw · history · blame

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
};