Files
mantra.press/server/router/account/index.js

126 lines
4.8 KiB
JavaScript

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