Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var Promise = require("bluebird");
- var bcrypt = Promise.promisifyAll(require('bcrypt-nodejs'));
- var config = require(global.base + 'config.json');
- var gcloud = Promise.promisifyAll(require('gcloud')({
- projectId: config.app.projectId,
- keyFilename: config.app.keyFilename
- }));
- var bunyan = require('bunyan');
- var log = bunyan.createLogger({name: 'main'});
- var dataset = Promise.promisifyAll(gcloud.datastore.dataset({namespace: 'users'}));
- module.exports.getUser = function(id){
- return new Promise(function(resolve) {
- //we must have a callback here because google is no fun and will not let us pass resolve
- dataset.get(dataset.key(['User', id]), function(err, entity){
- if(err)
- throw err;
- resolve(entity)
- });
- });
- }
- module.exports.register = function(data){
- return new Promise(function(resolve) {
- log.info("registering user");
- var key = dataset.key(['User', data.email]);
- //we must have a callback here because google is no fun and will not let us pass resolve
- dataset.save({ key: key, data: data }, function(err){
- if(err)
- throw err;
- });
- });
- }
- module.exports.reqRegister = function(req, res){
- return new Promise(function initialChecks(resolve){
- log.info("register request");
- var email = req.body.email;
- var password = req.body.password;
- var tos = req.body.tos != '0';
- if(!tos){
- throw 'Must accept TOS';
- }
- if(email == null || password == null){
- throw 'Must fill entire form';
- }
- if(false){
- throw 'Must enter valid email';
- }
- if(password.length < 6){
- throw 'Password must be 6 characters long';
- }
- if(password.length > 256 || email.length > 256){
- throw 'Email and password may not exceed 256 characters';
- }
- log.info("passed basic checks");
- resolve(email);
- })
- .then(module.exports.getUser)
- .then(function userExistsCheck( entity){
- if(entity != null){
- throw req.body.email + ' is in use';
- }
- log.info("user does not exist");
- return req.body.password;
- })
- .then(function jsonify(password){
- log.info("jsonifying");
- return {
- email : req.body.email,
- password : bcrypt.hashSync(password)
- };
- })
- .then(module.exports.register)
- .then(function success(){
- log.info("Success!");
- //login user here
- })
- .catch(function error(err){
- log.error(err);
- var data = {
- error: err
- }
- res.json(data);
- });
- }
Add Comment
Please, Sign In to add comment