UNPKG

kaizen-login

Version:

A default login using express and mongoose

60 lines (51 loc) 1.99 kB
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;