mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-05-05 06:37:10 -04:00
factored out pad access as a combinator
This commit is contained in:
parent
9f0ca7cc44
commit
fcb3b11c0e
1 changed files with 63 additions and 4 deletions
|
@ -66,12 +66,62 @@ exports.maxAge = 1000*60*60*6;
|
||||||
//set loglevel
|
//set loglevel
|
||||||
log4js.setGlobalLogLevel(settings.loglevel);
|
log4js.setGlobalLogLevel(settings.loglevel);
|
||||||
|
|
||||||
|
function setupDb(callback){
|
||||||
|
db.init(callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
function padAccessCombinator(securityManager, req, res, callback, errorback){
|
||||||
|
function checkback(err, accessObj){
|
||||||
|
if(err) return errorback(err);
|
||||||
|
if("grant" == accessObj.accessStatus) return callback();
|
||||||
|
return res.send("403 - Can't touch this", 403);
|
||||||
|
}
|
||||||
|
//works great for one session
|
||||||
|
//but what if there are multiple?
|
||||||
|
//if(!("sessionIDs" in req.cookies))
|
||||||
|
return securityManager.checkAccess(
|
||||||
|
req.params.pad,
|
||||||
|
req.cookies.sessionid,
|
||||||
|
req.cookies.token,
|
||||||
|
req.cookies.password,
|
||||||
|
checkback
|
||||||
|
);
|
||||||
|
/*sessIds = JSON.parse(req.cookies.sessionIDs);
|
||||||
|
var tasks = [];
|
||||||
|
function createTask(sid){
|
||||||
|
return function(cb){
|
||||||
|
return securityManager.checkAccess(
|
||||||
|
req.params.pad,
|
||||||
|
sid,
|
||||||
|
req.cookies.token,
|
||||||
|
req.cookies.password,
|
||||||
|
cb//function(err, accessObj){return cb(err, accessObj);}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(var i = 0; i < sessIds.length; i++)
|
||||||
|
tasks[i] = createTasks(sessIds[i]);
|
||||||
|
return async.parallel(
|
||||||
|
tasks,
|
||||||
|
function(err, obs){
|
||||||
|
if(err) return errorback(err);
|
||||||
|
for(var i = 0; i < obs.length; i++)
|
||||||
|
if("grant" == obs[i].accessStatus) return callback(null);
|
||||||
|
return res.send("none of those IDs worked", 403);
|
||||||
|
}
|
||||||
|
)*/
|
||||||
|
}
|
||||||
|
function getStatic(req, res){
|
||||||
|
res.header("Server", serverName);
|
||||||
|
var filePath = path.normalize(
|
||||||
|
__dirname + "/.." +
|
||||||
|
req.url.replace(/\.\./g, '').split("?")[0]
|
||||||
|
);
|
||||||
|
res.sendfile(filePath, { maxAge: exports.maxAge });
|
||||||
|
}
|
||||||
async.waterfall([
|
async.waterfall([
|
||||||
//initalize the database
|
//initalize the database
|
||||||
function (callback)
|
setupDb,
|
||||||
{
|
|
||||||
db.init(callback);
|
|
||||||
},
|
|
||||||
//initalize the http server
|
//initalize the http server
|
||||||
function (callback)
|
function (callback)
|
||||||
{
|
{
|
||||||
|
@ -137,6 +187,14 @@ async.waterfall([
|
||||||
//checks for padAccess
|
//checks for padAccess
|
||||||
function hasPadAccess(req, res, callback)
|
function hasPadAccess(req, res, callback)
|
||||||
{
|
{
|
||||||
|
return padAccessCombinator(
|
||||||
|
securityManager, req, res,
|
||||||
|
callback,
|
||||||
|
function errorback(err, accessObj){
|
||||||
|
return (ERR(err, callback));
|
||||||
|
}
|
||||||
|
);
|
||||||
|
/*
|
||||||
securityManager.checkAccess(req.params.pad, req.cookies.sessionid, req.cookies.token, req.cookies.password, function(err, accessObj)
|
securityManager.checkAccess(req.params.pad, req.cookies.sessionid, req.cookies.token, req.cookies.password, function(err, accessObj)
|
||||||
{
|
{
|
||||||
if(ERR(err, callback)) return;
|
if(ERR(err, callback)) return;
|
||||||
|
@ -152,6 +210,7 @@ async.waterfall([
|
||||||
res.send("403 - Can't touch this", 403);
|
res.send("403 - Can't touch this", 403);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
//checks for basic http auth
|
//checks for basic http auth
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue