new_user: function(config,callback){ if (!config.firstname||!config.lastname||!config.username||!config.email||!config.password) { callback({"Error": {"error_message": "DATA_NOT_SET", "message_type": "CONFIG"}}); }else{ // Limit character input config.firstname = config.firstname.replace(/[^a-zA-Z\-_]/,""); config.lastname = config.lastname.replace(/[^a-zA-Z\-_]/,""); config.username = config.username.replace(/[^a-zA-Z\-_]/,""); var salt = crypto.random_hash(); var hash = crypto.pbkdf2(config.password,salt); if (!hash.Error) { var new_user = { username: config.username, firstname: config.firstname, lastname: config.lastname, hash: hash, salt: salt, email: config.email, }; database.insert('users', new_user, function(result){ if (result.Error) { if (result.Error.error_message.name == "MongoError" && result.Error.error_message.code == 11000) { callback({"Error": {"error_message": "USER_EXISTS", "message_type": "CONFIG"}}); }else{ callback(result); } }else{ var the_user = new user(new_user.username); the_user.load(callback); } }); }else{ callback({"Error": {"error_message": hash.Error.error_message, "message_type": "CRYPTO"}}); } } },
function generate_session_id(username) { return username + "-" + common_crypto.random_hash(32); }