initial commit of poker game
This commit is contained in:
82
game-server/app/servers/game/remote/authRemote.js
Normal file
82
game-server/app/servers/game/remote/authRemote.js
Normal file
@@ -0,0 +1,82 @@
|
||||
var UserStore = require('../../../persistence/users');
|
||||
var tokenService = require('../../../../../shared/token');
|
||||
var SESSION_CONFIG = require('../../../../../shared/config/session.json');
|
||||
|
||||
module.exports = function(app){
|
||||
return new Remote(app);
|
||||
};
|
||||
var Remote = function(app){
|
||||
this.app = app;
|
||||
};
|
||||
var remote = Remote.prototype;
|
||||
|
||||
/**
|
||||
* Register user.
|
||||
*
|
||||
* @param {object} userObj object containing userObj.user and userObj.pass
|
||||
* @param {Function} cb
|
||||
* @return {Void}
|
||||
*/
|
||||
remote.register = function(userObj, cb){
|
||||
UserStore.create({
|
||||
username : userObj.username,
|
||||
password : userObj.password,
|
||||
email : userObj.email,
|
||||
chips : 100000
|
||||
}, function(e, user){
|
||||
if(e){
|
||||
cb(e);
|
||||
}else{
|
||||
cb(null, user);
|
||||
}
|
||||
});
|
||||
};
|
||||
/**
|
||||
* Auth via user/pass or token, and check for expiry.
|
||||
*
|
||||
* @param {object|string} input token or object containing username and password
|
||||
* @param {Function} cb
|
||||
* @return {Void}
|
||||
*/
|
||||
remote.auth = function(input, cb){
|
||||
if(typeof input === 'string'){
|
||||
var res = tokenService.parse(input, SESSION_CONFIG.secret);
|
||||
if(!res){
|
||||
cb('invalid-token');
|
||||
return;
|
||||
}
|
||||
if(!checkExpire(res, SESSION_CONFIG.expire)){
|
||||
cb('token-expired');
|
||||
return;
|
||||
}
|
||||
UserStore.getByAttr('id', res.uid, false, function(e, user){
|
||||
if(e){
|
||||
cb('invalid-user');
|
||||
return;
|
||||
}
|
||||
cb(null, user);
|
||||
});
|
||||
}else{
|
||||
UserStore.getByAttr(['username', 'password'], [input.username, input.password], false, function(e, user){
|
||||
if(!user){
|
||||
cb('invalid-user');
|
||||
}else{
|
||||
cb(null, user, tokenService.create(user.id, Date.now(), SESSION_CONFIG.secret));
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
/**
|
||||
* Check the token whether expire.
|
||||
*
|
||||
* @param {Object} token token info
|
||||
* @param {Number} expire expire time
|
||||
* @return {Boolean} true for not expire and false for expire
|
||||
*/
|
||||
var checkExpire = function(token, expire){
|
||||
if(expire < 0){
|
||||
// negative expire means never expire
|
||||
return true;
|
||||
}
|
||||
return (Date.now() - token.timestamp) < expire;
|
||||
};
|
||||
Reference in New Issue
Block a user