This is an automated email from the ASF dual-hosted git repository.
lyndonb pushed a commit to branch TINKERPOP-3081
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
The following commit(s) were added to refs/heads/TINKERPOP-3081 by this push:
new 2da0921312 TINKERPOP-3081 Fix traversal argument propagation under
authenticated traversal settings.
2da0921312 is described below
commit 2da0921312b09ecf8ad70953c00ace00cec049ce
Author: lyndon <[email protected]>
AuthorDate: Wed May 29 13:27:41 2024 -0700
TINKERPOP-3081 Fix traversal argument propagation under authenticated
traversal settings.
---
.../server/handler/WebSocketAuthorizationHandler.java | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git
a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/WebSocketAuthorizationHandler.java
b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/WebSocketAuthorizationHandler.java
index 98a24119c7..74f4da9005 100644
---
a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/WebSocketAuthorizationHandler.java
+++
b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/WebSocketAuthorizationHandler.java
@@ -68,11 +68,19 @@ public class WebSocketAuthorizationHandler extends
ChannelInboundHandlerAdapter
final Bytecode bytecode = (Bytecode)
requestMessage.getArgs().get(Tokens.ARGS_GREMLIN);
final Map<String, String> aliases = (Map<String,
String>) requestMessage.getArgs().get(Tokens.ARGS_ALIASES);
final Bytecode restrictedBytecode =
authorizer.authorize(user, bytecode, aliases);
- final RequestMessage restrictedMsg =
RequestMessage.build(Tokens.OPS_BYTECODE).
+ final RequestMessage.Builder restrictedMsgBuilder =
RequestMessage.build(Tokens.OPS_BYTECODE).
overrideRequestId(requestMessage.getRequestId()).
processor("traversal").
addArg(Tokens.ARGS_GREMLIN,
restrictedBytecode).
- addArg(Tokens.ARGS_ALIASES, aliases).create();
+ addArg(Tokens.ARGS_ALIASES, aliases);
+
+ // Apply all other arguments except the bytecode and
aliases.
+ for (Map.Entry<String, Object> entry :
requestMessage.getArgs().entrySet()) {
+ if (!Tokens.ARGS_GREMLIN.equals(entry.getKey()) &&
!Tokens.ARGS_ALIASES.equals(entry.getKey())) {
+ restrictedMsgBuilder.addArg(entry.getKey(),
entry.getValue());
+ }
+ }
+ final RequestMessage restrictedMsg =
restrictedMsgBuilder.create();
ctx.fireChannelRead(restrictedMsg);
break;
case Tokens.OPS_EVAL: