33 lines
1.0 KiB
JavaScript
33 lines
1.0 KiB
JavaScript
var LayergroupToken = require('../../models/layergroup-token');
|
|
|
|
module.exports = function layergroupTokenMiddleware(req, res, next) {
|
|
if (!res.locals.hasOwnProperty('token')) {
|
|
return next();
|
|
}
|
|
|
|
var user = req.context.user;
|
|
|
|
var layergroupToken = LayergroupToken.parse(res.locals.token);
|
|
res.locals.token = layergroupToken.token;
|
|
res.locals.cache_buster = layergroupToken.cacheBuster;
|
|
|
|
if (layergroupToken.signer) {
|
|
res.locals.signer = layergroupToken.signer;
|
|
if (!res.locals.signer) {
|
|
res.locals.signer = user;
|
|
} else if (res.locals.signer !== user) {
|
|
var err = new Error(`Cannot use map signature of user "${res.locals.signer}" on db of user "${user}"`);
|
|
err.type = 'auth';
|
|
err.http_status = 403;
|
|
if (req.query && req.query.callback) {
|
|
err.http_status = 200;
|
|
}
|
|
|
|
req.profiler.done('req2params');
|
|
return next(err);
|
|
}
|
|
}
|
|
|
|
return next();
|
|
};
|