dimas-b commented on code in PR #4409:
URL: https://github.com/apache/polaris/pull/4409#discussion_r3243480843


##########
polaris-core/src/main/java/org/apache/polaris/core/auth/PolarisAuthorizer.java:
##########
@@ -38,26 +39,85 @@ public interface PolarisAuthorizer {
    * <p>This method should not perform authorization decisions directly.
    */
   void resolveAuthorizationInputs(
-      @Nonnull AuthorizationState authzState, @Nonnull AuthorizationRequest 
request);
+      @Nonnull AuthorizationState authzState,
+      @Nonnull PolarisPrincipal polarisPrincipal,
+      @Nonnull AuthorizationRequest request);
+
+  /**
+   * Resolve authorizer-specific inputs for a batch of authorization requests 
that share one
+   * principal.
+   *
+   * <p>Implementations must define their own batch pre-resolution behavior 
explicitly because
+   * manifest registration is authorizer-specific.
+   */
+  void resolveAuthorizationInputs(
+      @Nonnull AuthorizationState authzState,
+      @Nonnull PolarisPrincipal polarisPrincipal,
+      @Nonnull List<AuthorizationRequest> requests);
 
   /**
    * Core authorization entry point for the new SPI.
    *
    * <p>Implementations should rely on any required state in {@link 
AuthorizationState} and the
-   * intent captured by {@link AuthorizationRequest} (principal, operation, 
and target securables).
+   * intent captured by {@link AuthorizationRequest} (operation and target 
securables), together
+   * with the explicit {@link PolarisPrincipal} argument.
    */
   @Nonnull
   AuthorizationDecision authorize(
-      @Nonnull AuthorizationState authzState, @Nonnull AuthorizationRequest 
request);
+      @Nonnull AuthorizationState authzState,
+      @Nonnull PolarisPrincipal polarisPrincipal,
+      @Nonnull AuthorizationRequest request);
+
+  /**
+   * Core authorization entry point for a batch of requests that share one 
principal.
+   *
+   * <p>The default behavior preserves semantics by evaluating requests 
independently in order and
+   * returning the first denial. Implementations may override this to use a 
single batched
+   * downstream authorization call.
+   */
+  @Nonnull
+  default AuthorizationDecision authorize(
+      @Nonnull AuthorizationState authzState,
+      @Nonnull PolarisPrincipal polarisPrincipal,
+      @Nonnull List<AuthorizationRequest> requests) {
+    Preconditions.checkArgument(
+        !requests.isEmpty(), "Authorization request batch must contain at 
least one request");
+    for (AuthorizationRequest request : requests) {
+      AuthorizationDecision decision = authorize(authzState, polarisPrincipal, 
request);
+      if (!decision.isAllowed()) {
+        return decision;

Review Comment:
   I'm ok with a gradual approach to supporting list filtering :+1: 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to