/** * This router handles things related to the web browser experience... */ // This is the mock data we working with... module.exports = function (options) { var express = options.express; var db = options.db; var passport = options.passport; var router = express.Router(); router.route('/') .get(function(request, response, next) { if (request.user) { response.display("account", { user: request.user, pageTitle: "Home - Mantra" }) } else { next(); } }); router.route('/authenticate') // TODO: Might have a unique identifier for this endpoint... .get(function (request, response, next) { if (request.user == null) { response.display("login-username", { user: request.user, pageTitle: "Login - Mantra", }); } else { response.redirect('/'); } }) .post(function (request, response, next) { if (request.user == null) { var username = "" + request.body.username; username = username.trim().toLowerCase(); if(request.body.password == null) { const email = db.Email.build({ address: username }) email.validate() .then((email)=> { response.display("login-password", { user: request.user, username: email.address, pageTitle: "Login - Mantra", }); }).catch(error => { response.display("login-username", { user: request.user, username: username, pageTitle: "Login - Mantra", data: { message: "Enter a valid email" } }); }) } else { passport.authenticate('local', (error, user, info) => { console.error("Error: ", error) if(info) { console.log("Info: ", info) response.display("login-username", { user: request.user, username: username, pageTitle: "Login - Mantra", data: info }) } else if(user) { if(request.body.rememberMe) { var now = new Date(); var expiresAt = new Date(); expiresAt.setFullYear(expiresAt.getFullYear()+5); // request.session.cookie.expires = expiresAt; request.session.cookie.maxAge = expiresAt; // TODO: Add the remember me cookie... } else { // TODO: Set that the remember me cookie wasn't selected... } request.logIn(user, function(err) { if (err) { return next(err); } return response.redirect('/'); }); } else { response.redirect('/account/authenticate') } })(request, response, next); } } else { response.redirect("/"); } }) router.route('/logout') .post(function(request, response, next) { if (request.user) { request.logout(); return db.Session.destroy({ where: { sid: request.sessionID } }).then(result => { response.redirect('/'); }).catch(error => { response.redirect('/'); console.error("Log out error: ", error); }) } else { response.redirect('/'); } }); // var passwordResetRouter = require('./password-reset/')(options); var libraryRouter = require('../library')(options); // router.use('/password-reset', passwordResetRouter); router.use('/library', libraryRouter); return router; };