kaizen-login
Version:
A default login using express and mongoose
55 lines (43 loc) • 1.85 kB
JavaScript
var path = require('path');
var UserControllerApi = require('./userApi');
var UserController = function UserController(baseUrl, options)
{
this.loginViewPath = path.resolve(__dirname, '../views/login');
this.createViewPath = path.resolve(__dirname, '../views/create');
UserControllerApi.apply(this, [baseUrl, options]);
}
UserController.prototype = Object.create(UserControllerApi.prototype);
UserController.prototype.getCreatePage = function getCreatePage(request, response)
{
this.setDefaultLocal(request, response);
response.render(this.createViewPath);
}
UserController.prototype.handleCreateCallback = function handleCreateCallback(response)
{
return (error, user) =>
{
if(error) return response.redirect(this.router.getPath('new', {errorMessage: "create_user_error"}));
return response.redirect(this.router.getPath("", {successMessage: "user_created"}));
}
}
UserController.prototype.getLoginPage = function getLoginPage(request, response)
{
this.setDefaultLocal(request, response);
response.render(this.loginViewPath);
}
UserController.prototype.setDefaultLocal = function(request, response)
{
response.locals.router = this.router;
response.locals.errorMessage = request.query.errorMessage;
response.locals.successMessage = request.query.successMessage;
}
UserController.prototype.handleLoginCallback = function handleLoginCallback(response)
{
return (error, user) =>
{
if(error || !user) return response.redirect(this.router.getPath("", {errorMessage: "invalid_login"}));
response.cookie("user",this.tokenHandler.getUserToken(user.getCredential()))
return response.redirect(this.router.getPath("", {successMessage: "login_success"}));
}
}
module.exports = UserController;