Skip to content

Instantly share code, notes, and snippets.

@dwaligora
Created November 17, 2014 13:08
Show Gist options
  • Save dwaligora/71ed8a3b37348350c628 to your computer and use it in GitHub Desktop.
Save dwaligora/71ed8a3b37348350c628 to your computer and use it in GitHub Desktop.
error handling node
'use strict';
var util = require('util'),
_ = require('lodash'),
nvbUtil = require('../../lib/nvb-util'),
session = require('../../lib/session'),
config = require('../../config'),
settingsManager = require('../../lib/settings');
/**
* Check if given client may be handled by zipper service.
* Checking is based on url subdomains {client}.{domain}
*
* @param {Request} req
* @param {Response} res
* @param {Function} next
* @returns {*}
*/
module.exports.authenticationBySubdomain = function(req, res, next) {
var RequestUtil = new nvbUtil.Request(req),
subdomains = RequestUtil.extractSubdomains(config.app.domain);
if (subdomains.length < 2) {
var err = new Error(
util.format(
'middleware::authenticationBySubdomain requesting host does not contain proper ' +
'subdomain pattern "{storage}.{client}.%s"',
config.app.domain
)
);
err.context = 'api';
err.formatter = 'json';
err.httpStatus = 500;
return next(err);
}
var clientId = subdomains[subdomains.length - 1],
provider = subdomains[subdomains.length - 2];
settingsManager.getSetting('client', clientId, function(err, data) {
if (err) {
console.log(typeof err);
var err = new Error(err.message);
err.kernel = 'api';
err.formatter = 'json';
err.httpStatus = 404;
next(err);
}
session.setClient(clientId);
session.setProvider(provider);
return next();
});
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment