backdraft
Version:
API starter kit for rapid response development. Based on Express.
80 lines (62 loc) • 2.77 kB
JavaScript
var config = require('../config/settings.manager.json')
, system = require('../lib/api')
, auth = require('../lib/auth')
, db = require('../lib/db')
, User = require('../models/user');
var logMeta = {source: 'controllers/user.js'};
exports.document = function userDocument (req, res, next) {
logMeta.document = 'document';
system.log('controllers/user: Starting User Instance Setup');
getUser (req, res, function userDocumentGetUser (err, instance) {
if (err || !instance) {
logMeta.detail = (err) ? err : 'User Document not found! (' + req.user._id + ')';
system.logger.exception('Missing User Document', logMeta);
system.errorHandler(logMeta, req, res);
}
if (instance.userId) {
system.log('controllers/user: User Found - ' + instance.userId);
next(null,instance);
} else {
system.logger.error('ERROR ESTABLISHING INSTANCE OF USER!', logMeta);
}
system.log('controllers/user: Completed User Instance');
});
}
function getUser (req, res, next) {
logMeta.function = 'getUser';
system.log('controllers/user: Getting Instance of User.');
var instance = {};
system.log('controllers/user: Setting user information.');
instance.userId = auth.userId(req);
Info.model.findOne({userId: instance.userId}, function getUserInfo (err, record) {
if (record) {
if (err) {
logMeta.detail = (err) ? err : 'User info not found! (' + req.user._id + ')';
system.logger.exception('Missing info document.', logMeta);
system.errorHandler(logMeta, req, res);
}
system.log('controllers/user: Setting info.');
instance.info = record;
} else {
system.log('controllers/user: Existing user not found. Starting a new one.');
newUser (req,res,function newUserInstance (err, instance) {
next(null,instance);
});
}
});
}
function newUser(req, res, next) {
logMeta.function = 'newUser';
system.log('controllers/user: Creating Instance of new User.');
var instance = {};
instance.info = new Info.model;
// initial values
instance.userId = auth.userId(req);
instance.info.userId = auth.userId(req);
system.log('controllers/user: Storing new Instance of User Info.');
db.create(instance.info, function newUserInfoCreate() {
logMeta.detail = 'User: ' + instance.userId;
system.logger.audit('Set up new user', logMeta);
next(err, instance);
});
}