Skip to content

Commit b0f9401

Browse files
committed
ref #296
1 parent dee03c0 commit b0f9401

File tree

1 file changed

+23
-15
lines changed

1 file changed

+23
-15
lines changed

grpc-spring-boot-starter/src/main/java/org/lognet/springboot/grpc/security/GrpcServiceAuthorizationConfigurer.java

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.util.Collections;
2121
import java.util.List;
2222
import java.util.Optional;
23+
import java.util.function.Predicate;
2324
import java.util.stream.Collectors;
2425
import java.util.stream.Stream;
2526

@@ -93,43 +94,50 @@ public class Registry {
9394
this.servicesRegistry = servicesRegistry;
9495
}
9596

96-
public AuthorizedMethod anyMethod() {
97-
ServiceDescriptor[] allServices = servicesRegistry.getBeanNameToServiceBeanMap()
98-
.values()
99-
.stream()
100-
.map(BindableService::bindService)
101-
.map(ServerServiceDefinition::getServiceDescriptor)
102-
.toArray(ServiceDescriptor[]::new);
103-
return new AuthorizedMethod(allServices);
104-
105-
}
106-
10797
public GrpcSecurity withoutSecuredAnnotation() {
10898
return withSecuredAnnotation(false);
10999
}
110100

101+
public AuthorizedMethod anyMethod() {
102+
return anyMethodExcluding(s->false);
103+
}
104+
111105
public AuthorizedMethod anyMethodExcluding(MethodDescriptor<?, ?>... methodDescriptor) {
112-
List<MethodDescriptor> excludedMethods = Arrays.asList(methodDescriptor);
113-
MethodDescriptor[] allMethods = servicesRegistry.getBeanNameToServiceBeanMap()
106+
List<MethodDescriptor<?,?>> excludedMethods = Arrays.asList(methodDescriptor);
107+
return anyMethodExcluding(excludedMethods::contains);
108+
109+
}
110+
111+
112+
public AuthorizedMethod anyMethodExcluding(Predicate<MethodDescriptor<?, ?>> excludePredicate) {
113+
MethodDescriptor<?,?>[] allMethods = servicesRegistry.getBeanNameToServiceBeanMap()
114114
.values()
115115
.stream()
116116
.map(BindableService::bindService)
117117
.map(ServerServiceDefinition::getServiceDescriptor)
118118
.map(ServiceDescriptor::getMethods)
119119
.flatMap(Collection::stream)
120-
.filter(method -> !excludedMethods.contains(method))
120+
.filter(excludePredicate.negate())
121121
.toArray(MethodDescriptor[]::new);
122122
return new AuthorizedMethod(allMethods);
123123
}
124124

125+
126+
public AuthorizedMethod anyService() {
127+
return anyServiceExcluding(s-> false);
128+
}
125129
public AuthorizedMethod anyServiceExcluding(ServiceDescriptor... serviceDescriptor) {
126130
List<ServiceDescriptor> excludedServices = Arrays.asList(serviceDescriptor);
131+
return anyServiceExcluding(excludedServices::contains);
132+
}
133+
public AuthorizedMethod anyServiceExcluding(Predicate<ServiceDescriptor> excludePredicate) {
134+
127135
ServiceDescriptor[] allServices = servicesRegistry.getBeanNameToServiceBeanMap()
128136
.values()
129137
.stream()
130138
.map(BindableService::bindService)
131139
.map(ServerServiceDefinition::getServiceDescriptor)
132-
.filter(service -> !excludedServices.contains(service))
140+
.filter(excludePredicate.negate())
133141
.toArray(ServiceDescriptor[]::new);
134142
return new AuthorizedMethod(allServices);
135143
}

0 commit comments

Comments
 (0)