bug fix on accessControl for variable-length arguments (was getting

writeAccess error)

Conflicts:

	lib/server/setupStore.js
	src/server/setupStore.coffee
This commit is contained in:
Tyler Renelle 2012-09-04 11:44:15 -04:00
parent 2008fceaf7
commit 4c29c93864
2 changed files with 46 additions and 17 deletions

View file

@ -8,15 +8,38 @@ module.exports.queries = function(store) {
module.exports.accessControl = function(store) {
store.accessControl = true;
store.readPathAccess('users.*', function(captures, next) {
var allowed;
allowed = captures === this.session.userId;
return next(allowed);
store.readPathAccess('users.*', function() {
var captures, next;
if (!(this.session && this.session.userId)) {
return;
}
captures = arguments[0];
next = arguments[arguments.length - 1];
console.log({
readPathAccess: {
captures: captures,
sessionUserId: this.session.userId,
next: next
}
});
return store.writeAccess('*', 'users.*', function(captures, value, next) {
var allowed, pathArray;
return next(captures === this.session.userId);
});
return store.writeAccess('*', 'users.*', function() {
var captures, next, pathArray;
if (!(this.session && this.session.userId)) {
return;
}
captures = arguments[0];
next = arguments[arguments.length - 1];
pathArray = captures.split('.');
allowed = pathArray[0] === this.session.userId;
return next(allowed);
console.log({
writeAccess: {
captures: captures,
next: next,
pathArray: pathArray,
"arguments": arguments
}
});
return next(pathArray[0] === this.session.userId);
});
};

View file

@ -3,16 +3,22 @@ module.exports.queries = (store) ->
@byId(id)
module.exports.accessControl = (store) ->
store.accessControl = true
store.readPathAccess 'users.*', (captures, next) ->
allowed = (captures == @session.userId)
# console.log { readPathAccess: {captures:captures, sessionUserId:@session.userId, allowed:allowed, next:next} }
next(allowed)
# FIXME callback signatures here have variable length, eg `callback(captures..., next)`
# Is using arguments[n] the correct way to handle this?
store.writeAccess '*', 'users.*', (captures, value, next) ->
store.readPathAccess 'users.*', () -> #captures, next) ->
return unless @session && @session.userId # https://github.com/codeparty/racer/issues/37
captures = arguments[0]
next = arguments[arguments.length-1]
console.log { readPathAccess: {captures:captures, sessionUserId:@session.userId, next:next} }
next(captures == @session.userId)
store.writeAccess '*', 'users.*', () -> #captures, value, next) ->
return unless @session && @session.userId
captures = arguments[0]
next = arguments[arguments.length-1]
pathArray = captures.split('.')
allowed = (pathArray[0] == @session.userId)
# console.log { writeAccess: {captures:captures, value:value, next:next, pathArray:pathArray} }
next(allowed)
console.log { writeAccess: {captures:captures, next:next, pathArray:pathArray, arguments:arguments} }
next(pathArray[0] == @session.userId)