UNPKG

ozserver

Version:

API for OZ

99 lines (84 loc) 3.26 kB
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;