Add basic functionality
This commit is contained in:
126
server/router/account/index.js
Normal file
126
server/router/account/index.js
Normal file
@@ -0,0 +1,126 @@
|
||||
/**
|
||||
* 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;
|
||||
};
|
||||
Reference in New Issue
Block a user