Created
May 11, 2012 04:10
-
-
Save diorahman/2657479 to your computer and use it in GitHub Desktop.
Default js
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var USERS = 'holahalo_users' | |
var USERTOKENS = 'holahalo_user_tokens' | |
var USEREMAILS = 'holahalo_user_emails' | |
var db = require('riak-js').getClient() | |
var _ = require('underscore') | |
var async = require('async') | |
var USERS = 'holahalo_users' | |
var USERTOKENS = 'holahalo_user_tokens' | |
var USEREMAILS = 'holahalo_user_emails' | |
function UserError (msg) { | |
Error.call(this); | |
Error.captureStackTrace(this, arguments.callee); | |
this.message = msg; | |
this.name = 'UserError'; | |
}; | |
UserError.prototype.__proto__ = Error.prototype; | |
function userDefault(){ | |
var user = { | |
username : 'holahalo', | |
password : 'aegislabs', | |
email: '[email protected]', | |
userToken : '2f88b6fe-d6d1-4764-bce5-f7ae55bfa559' | |
} | |
function saveUser(tokenAndEmail, cb){ | |
db.exists(USERS, user.username, function(err, exists, meta){ | |
if(exists) return cb(new UserError('User already exists')) | |
var obj = { | |
username : user.username, | |
password : user.password, | |
email : user.email | |
} | |
_.extend(obj, {timestamp : Date ()}) | |
db.save(USERS, user.username, obj, {links: [ | |
{tag : 'user_token', key : tokenAndEmail.userToken, bucket : USERTOKENS}, | |
{tag : 'user_email', key : tokenAndEmail.userEmail, bucket : USEREMAILS}, | |
]}, | |
function(err, obj, meta){ | |
var objUser = { | |
username : user.username, | |
} | |
_.extend(objUser, tokenAndEmail) | |
cb(err, objUser) | |
}) | |
}) | |
} | |
function saveUserEmail(token, cb){ | |
var email = { | |
userEmail : user.email | |
} | |
db.exists(USEREMAILS, user.email, function(err, exists, meta){ | |
if(exists) return cb(new UserError('Email already exists')) | |
db.save(USEREMAILS, user.email, email, function(err, obj, meta){ | |
_.extend(email, token) | |
_.extend(email, {timestamp : Date()}) | |
cb(err, email) | |
}) | |
}) | |
} | |
function generateToken(cb){ | |
cb(null, {userToken : user.userToken}) | |
} | |
function saveUserToken(userObj, cb){ | |
var token = {username : userObj.username, userToken : userObj.userToken} | |
_.extend(token, {timestamp : Date()}) | |
db.save(USERTOKENS, userObj.userToken, token, function(err, obj, meta){ | |
cb(err, userObj) | |
}) | |
} | |
function isExists(cb){ | |
async.parallel({ | |
User : function(callback){ | |
db.exists(USERS, user.username, function(err, exists, meta){ | |
callback(err, exists) | |
}) | |
}, | |
Email : function(callback){ | |
db.exists(USEREMAILS, user.email, function(err, exists, meta){ | |
callback(err, exists) | |
}) | |
} | |
}, function(err, result){ | |
if(err) return next(notAuthorized()) | |
var errList = [] | |
_.each(Object.keys(result), function(k, i){ | |
if(result[k]){ | |
errList.push(k + ' already exists') | |
} | |
if(i == Object.keys(result).length - 1) { | |
if(errList.length > 0) return cb(new UserError(errList.join(', '))) | |
return cb(null, false) | |
} | |
}) | |
}) | |
} | |
function save(){ | |
async.waterfall([ | |
function(callback){ | |
generateToken(callback) | |
}, | |
function(token, callback){ | |
saveUserEmail(token, callback) | |
}, | |
function(tokenAndEmail, callback){ | |
saveUser(tokenAndEmail, callback) | |
}, | |
function(userObj, callback){ | |
saveUserToken(userObj, callback) | |
} | |
], function (err, result) { | |
if(err) return console.log(err.message) | |
var obj = { | |
code : 'Success', | |
message : 'Success' | |
} | |
_.extend(obj, result) | |
console.log(result) | |
}); | |
} | |
isExists(function(err, exists){ | |
if(err) {console.log(err.message)} | |
save() | |
}); | |
} | |
userDefault() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment