Files
Windshaft-cartodb/lib/cartodb/middleware/layergroup-token.js
T
Raul Ochoa 22b7828725 Layergroup Token parsing as middleware
Reuses LayergroupToken model from tests.
2017-09-22 12:05:40 +00:00

36 lines
1.1 KiB
JavaScript

var LayergroupToken = require('../models/layergroup-token');
module.exports = function layergroupTokenMiddleware(req, res, next) {
if (!req.params.hasOwnProperty('token')) {
return next();
}
var user = req.context.user;
var layergroupToken = LayergroupToken.parse(req.params.token);
req.params.token = layergroupToken.token;
req.params.cache_buster = layergroupToken.cacheBuster;
if (layergroupToken.signer) {
req.params.signer = layergroupToken.signer;
if (!req.params.signer) {
req.params.signer = user;
} else if (req.params.signer !== user) {
var statusCode = 403;
if (req.query && req.query.callback) {
statusCode = 200;
}
var errorMessage = `Cannot use map signature of user "${req.params.signer}" on db of user "{${user}"`;
return res.status(statusCode).json({
errors: [errorMessage],
errors_with_context: [{
type: 'auth',
message: errorMessage
}]
});
}
}
return next();
};