9aman commented on code in PR #16043:
URL: https://github.com/apache/pinot/pull/16043#discussion_r2149078853


##########
pinot-broker/src/main/java/org/apache/pinot/broker/api/AccessControl.java:
##########
@@ -120,4 +128,39 @@ default TableAuthorizationResult 
authorize(RequesterIdentity requesterIdentity,
     return hasAccess(requesterIdentity, tables) ? 
TableAuthorizationResult.success()
         : new TableAuthorizationResult(tables);
   }
+
+
+  /**
+   * Returns RLS/CLS filters for a particular table. By default, there are no 
RLS/CLS filters on any table.
+   * @param requesterIdentity requested identity
+   * @param table Table used in the query. Table name can be with or without 
tableType.
+   * @return {@link TableRowColAuthResult} with the result of the access 
control check
+   */
+  default TableRowColAuthResult getRowColFilters(RequesterIdentity 
requesterIdentity, String table) {
+    if (table.equals("upsertMeetupRsvp")) {
+      return new TableRowColAuthResultImpl(Map.of("policyID1", 
List.of("event_id > 60", "event_id < 70")), Map.of(),

Review Comment:
   Marking this as resolved. Please reopen if needed. 



##########
pinot-broker/src/main/java/org/apache/pinot/broker/broker/BasicAuthAccessControlFactory.java:
##########
@@ -129,12 +132,43 @@ public TableAuthorizationResult 
authorize(RequesterIdentity requesterIdentity, S
           failedTables.add(table);
         }
       }
-      if (failedTables.isEmpty()) {
-        return TableAuthorizationResult.success();
-      }
+//      if (failedTables.isEmpty()) {
+//        return TableAuthorizationResult.success();
+//      }
       return new TableAuthorizationResult(failedTables);
     }
 
+    @Override
+    public TableRowColAuthResult getRowColFilters(RequesterIdentity 
requesterIdentity, String table) {
+      Optional<BasicAuthPrincipal> principalOpt = 
getPrincipalOpt(requesterIdentity);
+
+      if (principalOpt.isEmpty()) {
+        throw new NotAuthorizedException("Basic");
+      }
+
+      if (table == null) {
+        return TableRowColAuthResultImpl.unrestricted();
+      }
+
+      TableRowColAuthResult tableRowColAuthResult = new 
TableRowColAuthResultImpl();
+
+      BasicAuthPrincipal principal = principalOpt.get();
+
+      //precondition: The principal should have the table.
+      Preconditions.checkArgument(principal.hasTable(table),
+          "Principal: " + principal.getName() + " does not have access to 
table: " + table);
+
+      Optional<Map<String, List<String>>> rlsFiltersMaybe = 
principal.getRLSFilters(table);
+      Optional<Map<String, List<String>>> visibleColsMaybe = 
principal.getVisibleCols(table);

Review Comment:
   Marking this as resolved. Please reopen if needed. 



-- 
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: commits-unsubscr...@pinot.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to