[ISSUE 8230] fix the acl for NotifyClientTerminationRequest because group can be null. (#8231)

This commit is contained in:
dingshuangxi888
2024-06-04 13:46:16 +08:00
committed by GitHub
parent 949991e0aa
commit 7145964b4a
2 changed files with 7 additions and 2 deletions
@@ -40,6 +40,7 @@ import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;
import org.apache.commons.codec.DecoderException;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.rocketmq.acl.AccessResource;
import org.apache.rocketmq.acl.common.AclException;
@@ -268,7 +269,9 @@ public class PlainAccessResource implements AccessResource {
}
} else if (NotifyClientTerminationRequest.getDescriptor().getFullName().equals(rpcFullName)) {
NotifyClientTerminationRequest request = (NotifyClientTerminationRequest) messageV3;
accessResource.addGroupResourceAndPerm(request.getGroup(), Permission.SUB);
if (StringUtils.isNotBlank(request.getGroup().getName())) {
accessResource.addGroupResourceAndPerm(request.getGroup(), Permission.SUB);
}
} else if (QueryRouteRequest.getDescriptor().getFullName().equals(rpcFullName)) {
QueryRouteRequest request = (QueryRouteRequest) messageV3;
accessResource.addResourceAndPerm(request.getTopic(), Permission.ANY);
@@ -129,7 +129,9 @@ public class DefaultAuthorizationContextBuilder implements AuthorizationContextB
}
if (message instanceof NotifyClientTerminationRequest) {
NotifyClientTerminationRequest request = (NotifyClientTerminationRequest) message;
result = newGroupSubContexts(metadata, request.getGroup());
if (StringUtils.isNotBlank(request.getGroup().getName())) {
result = newGroupSubContexts(metadata, request.getGroup());
}
}
if (message instanceof ChangeInvisibleDurationRequest) {
ChangeInvisibleDurationRequest request = (ChangeInvisibleDurationRequest) message;