ozserver
Version:
API for OZ
99 lines (84 loc) • 3.26 kB
JavaScript
var EventEmitter, Signin, Token, User, colors, exports, mongoose, _,
__hasProp = {}.hasOwnProperty,
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
_ = require('lodash');
mongoose = require('mongoose');
colors = require('colors');
Token = require('token');
EventEmitter = require('events').EventEmitter;
User = mongoose.model('User', require(global.home + '/script/views/db/user'));
Signin = (function(_super) {
__extends(Signin, _super);
function Signin(req, res) {
var _this = this;
this.req = req;
this.res = res;
this.on('send', function() {
console.log(JSON.stringify(_this.mdl.model).cyan);
return _this.res.jsonp(_this.mdl.model);
});
this.on('success', function() {
_this.mdl.signin();
return _this.emit('send');
});
this.on('check', function() {
var model, _ref;
model = ((_ref = _this.req.query) != null ? _ref.model : void 0) != null ? JSON.parse(_this.req.query.model) : {};
_this.mdl = require(global.home + '/script/models/signin/signin')(model);
_this.mdl.check();
if (_this.mdl.valid === true) {
return User.findOne({
email: _this.mdl.model.email,
key: _this.mdl.model.key
}, function(err, exists) {
if ((exists != null ? exists.id : void 0) != null) {
_this.mdl.success(exists.id);
} else {
_this.mdl.fail();
}
return _this.emit('send');
});
} else {
return _this.emit('send');
}
});
this.on('fetch', function() {
_this.mdl = require(global.home + '/script/models/signin/signin')();
return User.findOne({
id: _this.req.route.params.id != null ? _this.req.route.params.id : '',
key: _this.req.route.params.key != null ? _this.req.route.params.key : '',
disabled: false
}, function(err, user) {
var out;
if (user != null) {
user.token = _this.generateToken(user).toString();
user.sessid = _this.req.sessionID.toString();
user.post_dt = new Date();
user.save();
out = _.omit(user.toJSON(), 'files', 'disabled', 'post_dt', 'reg_dt', '__v', '_id');
_this.mdl.model = out;
_this.updateSession(user.toJSON());
return _this.emit('success');
} else {
_this.mdl.userNotFound();
return _this.emit('send');
}
});
});
}
Signin.prototype.updateSession = function(user) {
this.req.session.user.id = user.id;
this.req.session.user.key = user.key;
return this.req.session.user.email = user.email;
};
Signin.prototype.generateToken = function(user) {
Token.defaults.secret = 'ozserver';
Token.defaults.timeStep = 24 * 60 * 60;
return Token.generate("" + this.req.session.id + "|" + user.id + "|" + user.key);
};
return Signin;
})(EventEmitter);
exports = module.exports = function(req, res) {
return new Signin(req, res);
};
exports.Signin = Signin;