kaizen-login
Version:
A default login using express and mongoose
60 lines (51 loc) • 1.99 kB
JavaScript
var User = require('../model/user');
var tokenHandler = require('../model/tokenHandler')
var Route = require('../model/route');
var UserControllerApi = function UserControllerApi(baseUrl, options)
{
this.userModel = options && options.userModel? options.userModel : User;
this.tokenHandler = options && options.tokenHandler? options.tokenHandler : tokenHandler;
this.router = new Route(baseUrl);
}
UserControllerApi.prototype.create = function create(request, response)
{
var password = request.body.password;
delete request.body.password;
var newUser = request.body;
this.userModel.register(newUser, password, this.handleCreateCallback(response));
}
UserControllerApi.prototype.handleCreateCallback = function handleCreateCallback(response)
{
return (error, newUser) =>
{
if(error) return response.status(error).send(error);
return response.status(202).send(newUser._id);
}
}
UserControllerApi.prototype.login = function login(request, response)
{
var authenticateUser = this.userModel.authenticate();
authenticateUser(request.body.username, request.body.password, this.handleLoginCallback(response));
}
UserControllerApi.prototype.handleLoginCallback = function handleLoginCallback(response)
{
return (error, user) =>
{
if(error) return response.status(error).send(error);
return response.status(200).send(this.tokenHandler.getUserToken(user.getCredential()));
}
}
UserControllerApi.prototype.edit = function edit(request, response)
{
var userId = request.params.id;
User.findByIdAndUpdate(userId, request.body, this.handleEditCallback(response));
}
UserControllerApi.prototype.handleEditCallback = function(response)
{
return (error, user) =>
{
if(error) return response.status(error).send(error);
return response.status(200).send("OK");
}
}
module.exports = UserControllerApi;