mirror of
https://github.com/sudoxnym/habitica.git
synced 2026-08-05 12:02:13 +00:00
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:
parent
2008fceaf7
commit
4c29c93864
2 changed files with 46 additions and 17 deletions
|
|
@ -8,15 +8,38 @@ module.exports.queries = function(store) {
|
||||||
|
|
||||||
module.exports.accessControl = function(store) {
|
module.exports.accessControl = function(store) {
|
||||||
store.accessControl = true;
|
store.accessControl = true;
|
||||||
store.readPathAccess('users.*', function(captures, next) {
|
store.readPathAccess('users.*', function() {
|
||||||
var allowed;
|
var captures, next;
|
||||||
allowed = captures === this.session.userId;
|
if (!(this.session && this.session.userId)) {
|
||||||
return next(allowed);
|
return;
|
||||||
|
}
|
||||||
|
captures = arguments[0];
|
||||||
|
next = arguments[arguments.length - 1];
|
||||||
|
console.log({
|
||||||
|
readPathAccess: {
|
||||||
|
captures: captures,
|
||||||
|
sessionUserId: this.session.userId,
|
||||||
|
next: next
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return next(captures === this.session.userId);
|
||||||
});
|
});
|
||||||
return store.writeAccess('*', 'users.*', function(captures, value, next) {
|
return store.writeAccess('*', 'users.*', function() {
|
||||||
var allowed, pathArray;
|
var captures, next, pathArray;
|
||||||
|
if (!(this.session && this.session.userId)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
captures = arguments[0];
|
||||||
|
next = arguments[arguments.length - 1];
|
||||||
pathArray = captures.split('.');
|
pathArray = captures.split('.');
|
||||||
allowed = pathArray[0] === this.session.userId;
|
console.log({
|
||||||
return next(allowed);
|
writeAccess: {
|
||||||
|
captures: captures,
|
||||||
|
next: next,
|
||||||
|
pathArray: pathArray,
|
||||||
|
"arguments": arguments
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return next(pathArray[0] === this.session.userId);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -3,16 +3,22 @@ module.exports.queries = (store) ->
|
||||||
@byId(id)
|
@byId(id)
|
||||||
|
|
||||||
module.exports.accessControl = (store) ->
|
module.exports.accessControl = (store) ->
|
||||||
|
|
||||||
store.accessControl = true
|
store.accessControl = true
|
||||||
|
|
||||||
store.readPathAccess 'users.*', (captures, next) ->
|
# FIXME callback signatures here have variable length, eg `callback(captures..., next)`
|
||||||
allowed = (captures == @session.userId)
|
# Is using arguments[n] the correct way to handle this?
|
||||||
# console.log { readPathAccess: {captures:captures, sessionUserId:@session.userId, allowed:allowed, next:next} }
|
|
||||||
next(allowed)
|
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) ->
|
store.writeAccess '*', 'users.*', () -> #captures, value, next) ->
|
||||||
|
return unless @session && @session.userId
|
||||||
|
captures = arguments[0]
|
||||||
|
next = arguments[arguments.length-1]
|
||||||
pathArray = captures.split('.')
|
pathArray = captures.split('.')
|
||||||
allowed = (pathArray[0] == @session.userId)
|
console.log { writeAccess: {captures:captures, next:next, pathArray:pathArray, arguments:arguments} }
|
||||||
# console.log { writeAccess: {captures:captures, value:value, next:next, pathArray:pathArray} }
|
next(pathArray[0] == @session.userId)
|
||||||
next(allowed)
|
|
||||||
Loading…
Reference in a new issue