| 
									
										
										
										
											2013-04-22 18:10:24 +00:00
										 |  |  | var RDB = require('./redis.js'); | 
					
						
							| 
									
										
										
										
											2013-04-22 16:51:32 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | (function(User) { | 
					
						
							|  |  |  | 	var current_uid; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-22 19:01:45 +00:00
										 |  |  | 	User.login = function(user) { | 
					
						
							|  |  |  | 		if (current_uid) { | 
					
						
							|  |  |  | 			return global.socket.emit('user.login', {'status': 0, 'message': 'User is already logged in.'}); | 
					
						
							|  |  |  | 			 | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		if (user.username == null || user.password == null) { | 
					
						
							|  |  |  | 			return global.socket.emit('user.login', {'status': 0, 'message': 'Missing fields'}); | 
					
						
							|  |  |  | 			 | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		RDB.get('username:' + user.username + ':uid', function(uid) { | 
					
						
							|  |  |  | 			if (uid == null) { | 
					
						
							|  |  |  | 				return global.socket.emit('user.login', {'status': 0, 'message': 'Username does not exist.'}); | 
					
						
							|  |  |  | 				 | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			RDB.get('uid:' + uid + ':password', function(password) { | 
					
						
							|  |  |  | 				if (user.password != password) { | 
					
						
							|  |  |  | 					return global.socket.emit('user.login', {'status': 0, 'message': 'Incorrect username / password combination.'}); | 
					
						
							|  |  |  | 				} else { | 
					
						
							|  |  |  | 					console.log('in'); | 
					
						
							|  |  |  | 					return global.socket.emit('user.login', {'status': 1, 'message': 'Logged in!'}); | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 				 | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 				 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-22 17:31:51 -04:00
										 |  |  | 	User.create = function(username, password, email) { | 
					
						
							| 
									
										
										
										
											2013-04-22 16:51:32 +00:00
										 |  |  | 		if (current_uid) { | 
					
						
							| 
									
										
										
										
											2013-04-22 19:01:45 +00:00
										 |  |  | 			return; global.socket.emit('user.create', {'status': 0, 'message': 'Only anonymous users can register a new account.'}); | 
					
						
							| 
									
										
										
										
											2013-04-22 16:51:32 +00:00
										 |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		if (username == null || password == null) { | 
					
						
							| 
									
										
										
										
											2013-04-22 19:01:45 +00:00
										 |  |  | 			return; global.socket.emit('user.create', {'status': 0, 'message': 'Missing fields'}); | 
					
						
							| 
									
										
										
										
											2013-04-22 16:51:32 +00:00
										 |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		User.exists(username, function(exists) { | 
					
						
							|  |  |  | 			if (exists) { | 
					
						
							|  |  |  | 				return; | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			RDB.incr('global:next_user_id', function(uid) { | 
					
						
							|  |  |  | 				RDB.set('username:' + username + ':uid', uid); | 
					
						
							|  |  |  | 				RDB.set('uid:' + uid + ':username', username); | 
					
						
							|  |  |  | 				RDB.set('uid:' + uid + ':password', password); | 
					
						
							| 
									
										
										
										
											2013-04-22 17:31:51 -04:00
										 |  |  | 				RDB.set('uid:' + uid + ':email', email); | 
					
						
							|  |  |  | 				RDB.set('email:' + email, uid); | 
					
						
							| 
									
										
										
										
											2013-04-22 16:51:32 +00:00
										 |  |  | 				 | 
					
						
							|  |  |  | 				RDB.incr('user:count', function(count) { | 
					
						
							| 
									
										
										
										
											2013-04-22 18:10:24 +00:00
										 |  |  | 					io.sockets.emit('user.count', {count: count}); | 
					
						
							| 
									
										
										
										
											2013-04-22 16:51:32 +00:00
										 |  |  | 				}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 				RDB.lpush('user:users', username); | 
					
						
							| 
									
										
										
										
											2013-04-22 18:10:24 +00:00
										 |  |  | 				io.sockets.emit('user.latest', {username: username}); | 
					
						
							| 
									
										
										
										
											2013-04-22 16:51:32 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 				global.socket.emit('user.create', {'status': 1}); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	User.exists = function(username, callback) { | 
					
						
							|  |  |  | 		User.get_uid_by_username(username, function(exists) { | 
					
						
							|  |  |  | 			exists = !!exists; | 
					
						
							|  |  |  | 			global.socket.emit('user.exists', {exists: exists}) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			if (callback) { | 
					
						
							|  |  |  | 				callback(exists); | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 	User.count = function() { | 
					
						
							|  |  |  | 		RDB.get('user:count', function(count) { | 
					
						
							|  |  |  | 			global.socket.emit('user.count', {count: (count === null) ? 0 : count}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 	User.latest = function() { | 
					
						
							|  |  |  | 		RDB.lrange('user:users', 0, 0, function(username) { | 
					
						
							|  |  |  | 			global.socket.emit('user.latest', {username: username}); | 
					
						
							|  |  |  | 		});	 | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	User.get_uid_by_username = function(username, callback) { | 
					
						
							|  |  |  | 		RDB.get('username:' + username + ':uid', callback); | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-22 17:31:51 -04:00
										 |  |  | 	User.email = { | 
					
						
							|  |  |  | 		exists: function(email) { | 
					
						
							|  |  |  | 			RDB.get('email:' + email, function(exists) { | 
					
						
							|  |  |  | 				console.log('email:' + email, exists); | 
					
						
							|  |  |  | 				exists = !!exists; | 
					
						
							|  |  |  | 				global.socket.emit('user.email.exists', { exists: exists }); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2013-04-22 16:51:32 +00:00
										 |  |  | }(exports)); |