UNPKG

backdraft

Version:

API starter kit for rapid response development. Based on Express.

80 lines (62 loc) 2.77 kB
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); }); }