Skip to content

Commit a5afd91

Browse files
committed
fix(server): fix npe in non-auth mode
1 parent b12425c commit a5afd91

File tree

4 files changed

+63
-117
lines changed

4 files changed

+63
-117
lines changed

hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/api/auth/ManagerAPI.java

Lines changed: 12 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,13 @@
1919

2020
package org.apache.hugegraph.api.auth;
2121

22-
import java.util.ArrayList;
23-
import java.util.List;
24-
22+
import com.codahale.metrics.annotation.Timed;
23+
import com.fasterxml.jackson.annotation.JsonProperty;
24+
import com.google.common.collect.ImmutableMap;
25+
import io.swagger.v3.oas.annotations.tags.Tag;
26+
import jakarta.inject.Singleton;
27+
import jakarta.ws.rs.*;
28+
import jakarta.ws.rs.core.Context;
2529
import org.apache.hugegraph.api.API;
2630
import org.apache.hugegraph.api.filter.StatusFilter;
2731
import org.apache.hugegraph.auth.AuthManager;
@@ -33,21 +37,8 @@
3337
import org.apache.hugegraph.util.Log;
3438
import org.slf4j.Logger;
3539

36-
import com.codahale.metrics.annotation.Timed;
37-
import com.fasterxml.jackson.annotation.JsonProperty;
38-
import com.google.common.collect.ImmutableMap;
39-
40-
import io.swagger.v3.oas.annotations.tags.Tag;
41-
import jakarta.inject.Singleton;
42-
import jakarta.ws.rs.Consumes;
43-
import jakarta.ws.rs.DELETE;
44-
import jakarta.ws.rs.GET;
45-
import jakarta.ws.rs.POST;
46-
import jakarta.ws.rs.Path;
47-
import jakarta.ws.rs.PathParam;
48-
import jakarta.ws.rs.Produces;
49-
import jakarta.ws.rs.QueryParam;
50-
import jakarta.ws.rs.core.Context;
40+
import java.util.ArrayList;
41+
import java.util.List;
5142

5243
@Path("graphspaces/{graphspace}/auth/managers")
5344
@Singleton
@@ -73,7 +64,7 @@ public String createManager(@Context GraphManager manager,
7364
AuthManager authManager = manager.authManager();
7465
validUser(authManager, user);
7566

76-
String creator = HugeGraphAuthProxy.getContext().user().username();
67+
String creator = HugeGraphAuthProxy.username();
7768
switch (type) {
7869
case SPACE:
7970
validGraphSpace(manager, graphSpace);
@@ -124,7 +115,7 @@ public void delete(@Context GraphManager manager,
124115
AuthManager authManager = manager.authManager();
125116
validType(type);
126117
validUser(authManager, user);
127-
String actionUser = HugeGraphAuthProxy.getContext().user().username();
118+
String actionUser = HugeGraphAuthProxy.username();
128119

129120
switch (type) {
130121
case SPACE:
@@ -193,7 +184,7 @@ public String checkRole(@Context GraphManager manager,
193184

194185
validType(type);
195186
AuthManager authManager = manager.authManager();
196-
String user = HugeGraphAuthProxy.getContext().user().username();
187+
String user = HugeGraphAuthProxy.username();
197188

198189
boolean result;
199190
switch (type) {

hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/api/profile/GraphsAPI.java

Lines changed: 14 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,14 @@
1717

1818
package org.apache.hugegraph.api.profile;
1919

20-
import java.io.File;
21-
import java.util.HashMap;
22-
import java.util.HashSet;
23-
import java.util.Map;
24-
import java.util.Set;
25-
20+
import com.codahale.metrics.annotation.Timed;
21+
import com.google.common.collect.ImmutableMap;
22+
import io.swagger.v3.oas.annotations.tags.Tag;
23+
import jakarta.annotation.security.RolesAllowed;
24+
import jakarta.inject.Singleton;
25+
import jakarta.ws.rs.*;
26+
import jakarta.ws.rs.core.Context;
27+
import jakarta.ws.rs.core.SecurityContext;
2628
import org.apache.commons.lang3.StringUtils;
2729
import org.apache.hugegraph.HugeException;
2830
import org.apache.hugegraph.HugeGraph;
@@ -42,25 +44,11 @@
4244
import org.apache.logging.log4j.util.Strings;
4345
import org.slf4j.Logger;
4446

45-
import com.codahale.metrics.annotation.Timed;
46-
import com.google.common.collect.ImmutableMap;
47-
48-
import io.swagger.v3.oas.annotations.tags.Tag;
49-
import jakarta.annotation.security.RolesAllowed;
50-
import jakarta.inject.Singleton;
51-
import jakarta.ws.rs.Consumes;
52-
import jakarta.ws.rs.DELETE;
53-
import jakarta.ws.rs.ForbiddenException;
54-
import jakarta.ws.rs.GET;
55-
import jakarta.ws.rs.NotSupportedException;
56-
import jakarta.ws.rs.POST;
57-
import jakarta.ws.rs.PUT;
58-
import jakarta.ws.rs.Path;
59-
import jakarta.ws.rs.PathParam;
60-
import jakarta.ws.rs.Produces;
61-
import jakarta.ws.rs.QueryParam;
62-
import jakarta.ws.rs.core.Context;
63-
import jakarta.ws.rs.core.SecurityContext;
47+
import java.io.File;
48+
import java.util.HashMap;
49+
import java.util.HashSet;
50+
import java.util.Map;
51+
import java.util.Set;
6452

6553
@Path("graphspaces/{graphspace}/graphs")
6654
@Singleton
@@ -199,7 +187,7 @@ public Object create(@Context GraphManager manager,
199187
}
200188
}
201189

202-
String creator = HugeGraphAuthProxy.getContext().user().username();
190+
String creator = HugeGraphAuthProxy.username();
203191

204192
if (StringUtils.isNotEmpty(clone)) {
205193
// Clone from existing graph

hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/api/space/GraphSpaceAPI.java

Lines changed: 12 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,15 @@
1919

2020
package org.apache.hugegraph.api.space;
2121

22-
import java.util.Map;
23-
import java.util.Set;
24-
22+
import com.codahale.metrics.annotation.Timed;
23+
import com.fasterxml.jackson.annotation.JsonProperty;
24+
import com.google.common.collect.ImmutableMap;
25+
import io.swagger.v3.oas.annotations.tags.Tag;
26+
import jakarta.annotation.security.RolesAllowed;
27+
import jakarta.inject.Singleton;
28+
import jakarta.ws.rs.*;
29+
import jakarta.ws.rs.core.Context;
30+
import jakarta.ws.rs.core.SecurityContext;
2531
import org.apache.commons.codec.digest.DigestUtils;
2632
import org.apache.commons.lang.StringUtils;
2733
import org.apache.hugegraph.api.API;
@@ -37,23 +43,8 @@
3743
import org.apache.logging.log4j.util.Strings;
3844
import org.slf4j.Logger;
3945

40-
import com.codahale.metrics.annotation.Timed;
41-
import com.fasterxml.jackson.annotation.JsonProperty;
42-
import com.google.common.collect.ImmutableMap;
43-
44-
import io.swagger.v3.oas.annotations.tags.Tag;
45-
import jakarta.annotation.security.RolesAllowed;
46-
import jakarta.inject.Singleton;
47-
import jakarta.ws.rs.Consumes;
48-
import jakarta.ws.rs.DELETE;
49-
import jakarta.ws.rs.GET;
50-
import jakarta.ws.rs.POST;
51-
import jakarta.ws.rs.PUT;
52-
import jakarta.ws.rs.Path;
53-
import jakarta.ws.rs.PathParam;
54-
import jakarta.ws.rs.Produces;
55-
import jakarta.ws.rs.core.Context;
56-
import jakarta.ws.rs.core.SecurityContext;
46+
import java.util.Map;
47+
import java.util.Set;
5748

5849
@Path("graphspaces")
5950
@Singleton
@@ -104,7 +95,7 @@ public String create(@Context GraphManager manager,
10495

10596
jsonGraphSpace.checkCreate(false);
10697

107-
String creator = HugeGraphAuthProxy.getContext().user().username();
98+
String creator = HugeGraphAuthProxy.username();
10899
GraphSpace exist = manager.graphSpace(jsonGraphSpace.name);
109100
E.checkArgument(exist == null, "The graph space '%s' has existed",
110101
jsonGraphSpace.name);

hugegraph-server/hugegraph-api/src/main/java/org/apache/hugegraph/auth/HugeGraphAuthProxy.java

Lines changed: 25 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -17,27 +17,9 @@
1717

1818
package org.apache.hugegraph.auth;
1919

20-
import java.time.Duration;
21-
import java.util.ArrayList;
22-
import java.util.Collection;
23-
import java.util.Collections;
24-
import java.util.Date;
25-
import java.util.Iterator;
26-
import java.util.List;
27-
import java.util.Objects;
28-
import java.util.Optional;
29-
import java.util.Set;
30-
import java.util.concurrent.Callable;
31-
import java.util.concurrent.Future;
32-
import java.util.concurrent.LinkedBlockingQueue;
33-
import java.util.concurrent.ThreadFactory;
34-
import java.util.concurrent.ThreadPoolExecutor;
35-
import java.util.concurrent.TimeUnit;
36-
import java.util.concurrent.TimeoutException;
37-
import java.util.function.Supplier;
38-
39-
import javax.security.sasl.AuthenticationException;
40-
20+
import com.alipay.remoting.rpc.RpcServer;
21+
import jakarta.ws.rs.ForbiddenException;
22+
import jakarta.ws.rs.NotAuthorizedException;
4123
import org.apache.commons.configuration2.Configuration;
4224
import org.apache.hugegraph.HugeGraph;
4325
import org.apache.hugegraph.auth.HugeAuthenticator.RolePerm;
@@ -63,22 +45,12 @@
6345
import org.apache.hugegraph.masterelection.RoleElectionStateMachine;
6446
import org.apache.hugegraph.rpc.RpcServiceConfig4Client;
6547
import org.apache.hugegraph.rpc.RpcServiceConfig4Server;
66-
import org.apache.hugegraph.schema.EdgeLabel;
67-
import org.apache.hugegraph.schema.IndexLabel;
68-
import org.apache.hugegraph.schema.PropertyKey;
69-
import org.apache.hugegraph.schema.SchemaElement;
70-
import org.apache.hugegraph.schema.SchemaLabel;
71-
import org.apache.hugegraph.schema.SchemaManager;
72-
import org.apache.hugegraph.schema.VertexLabel;
48+
import org.apache.hugegraph.schema.*;
7349
import org.apache.hugegraph.structure.HugeEdge;
7450
import org.apache.hugegraph.structure.HugeElement;
7551
import org.apache.hugegraph.structure.HugeFeatures;
7652
import org.apache.hugegraph.structure.HugeVertex;
77-
import org.apache.hugegraph.task.HugeTask;
78-
import org.apache.hugegraph.task.ServerInfoManager;
79-
import org.apache.hugegraph.task.TaskManager;
80-
import org.apache.hugegraph.task.TaskScheduler;
81-
import org.apache.hugegraph.task.TaskStatus;
53+
import org.apache.hugegraph.task.*;
8254
import org.apache.hugegraph.traversal.optimize.HugeScriptTraversal;
8355
import org.apache.hugegraph.type.HugeType;
8456
import org.apache.hugegraph.type.Nameable;
@@ -88,28 +60,19 @@
8860
import org.apache.hugegraph.util.Log;
8961
import org.apache.hugegraph.util.RateLimiter;
9062
import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
91-
import org.apache.tinkerpop.gremlin.process.traversal.Bytecode;
63+
import org.apache.tinkerpop.gremlin.process.traversal.*;
9264
import org.apache.tinkerpop.gremlin.process.traversal.Bytecode.Instruction;
93-
import org.apache.tinkerpop.gremlin.process.traversal.Script;
94-
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
95-
import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
96-
import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
9765
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
9866
import org.apache.tinkerpop.gremlin.process.traversal.translator.GroovyTranslator;
99-
import org.apache.tinkerpop.gremlin.structure.Edge;
100-
import org.apache.tinkerpop.gremlin.structure.Element;
101-
import org.apache.tinkerpop.gremlin.structure.Graph;
102-
import org.apache.tinkerpop.gremlin.structure.Property;
103-
import org.apache.tinkerpop.gremlin.structure.Transaction;
104-
import org.apache.tinkerpop.gremlin.structure.Vertex;
105-
import org.apache.tinkerpop.gremlin.structure.VertexProperty;
67+
import org.apache.tinkerpop.gremlin.structure.*;
10668
import org.apache.tinkerpop.gremlin.structure.io.Io;
10769
import org.slf4j.Logger;
10870

109-
import com.alipay.remoting.rpc.RpcServer;
110-
111-
import jakarta.ws.rs.ForbiddenException;
112-
import jakarta.ws.rs.NotAuthorizedException;
71+
import javax.security.sasl.AuthenticationException;
72+
import java.time.Duration;
73+
import java.util.*;
74+
import java.util.concurrent.*;
75+
import java.util.function.Supplier;
11376

11477
public final class HugeGraphAuthProxy implements HugeGraph {
11578

@@ -186,6 +149,11 @@ public static Context setAdmin() {
186149
public static Context getContext() {
187150
// Return task context first
188151
String taskContext = TaskManager.getContext();
152+
153+
if (taskContext == null) {
154+
return null;
155+
}
156+
189157
User user = User.fromJson(taskContext);
190158
if (user != null) {
191159
return new Context(user);
@@ -953,6 +921,14 @@ public void updateTime(Date updateTime) {
953921
this.hugegraph.updateTime(updateTime);
954922
}
955923

924+
public static String username() {
925+
Context context = HugeGraphAuthProxy.getContext();
926+
if (context == null) {
927+
return "anonymous";
928+
}
929+
return context.user.username();
930+
}
931+
956932
private <V> Cache<Id, V> cache(String prefix, long capacity,
957933
long expiredTime) {
958934
String name = prefix + "-" + this.hugegraph.spaceGraphName();

0 commit comments

Comments
 (0)