Skip to content

Commit e6d43b6

Browse files
Adds a new get all accessible resources endpoint for current user
Signed-off-by: Darshit Chanpura <[email protected]>
1 parent 004e0b6 commit e6d43b6

File tree

9 files changed

+319
-208
lines changed

9 files changed

+319
-208
lines changed

client/src/main/java/org/opensearch/security/client/resources/ResourceSharingClient.java

+8
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import java.util.Set;
1313

1414
import org.opensearch.core.action.ActionListener;
15+
import org.opensearch.security.spi.resources.Resource;
1516
import org.opensearch.security.spi.resources.sharing.ResourceSharing;
1617

1718
/**
@@ -54,4 +55,11 @@ void revokeResourceAccess(
5455
Set<String> scopes,
5556
ActionListener<ResourceSharing> listener
5657
);
58+
59+
/**
60+
* Lists all resources accessible by the current user.
61+
* @param resourceIndex The index containing the resources.
62+
* @param listener The listener to be notified with the set of accessible resources.
63+
*/
64+
void listAllAccessibleResources(String resourceIndex, ActionListener<Set<? extends Resource>> listener);
5765
}

client/src/main/java/org/opensearch/security/client/resources/ResourceSharingNodeClient.java

+21
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.opensearch.security.common.resources.rest.ResourceAccessRequest;
2323
import org.opensearch.security.common.resources.rest.ResourceAccessResponse;
2424
import org.opensearch.security.common.support.ConfigConstants;
25+
import org.opensearch.security.spi.resources.Resource;
2526
import org.opensearch.security.spi.resources.sharing.ResourceSharing;
2627
import org.opensearch.transport.client.Client;
2728

@@ -120,6 +121,26 @@ public void revokeResourceAccess(
120121
client.execute(ResourceAccessAction.INSTANCE, request, sharingInfoResponseListener(listener));
121122
}
122123

124+
/**
125+
* Lists all resources accessible by the current user.
126+
*
127+
* @param listener The listener to be notified with the set of accessible resources.
128+
*/
129+
@Override
130+
public void listAllAccessibleResources(String resourceIndex, ActionListener<Set<? extends Resource>> listener) {
131+
if (isResourceAccessControlDisabled("Unable to list all accessible resources.", listener)) {
132+
return;
133+
}
134+
ResourceAccessRequest request = new ResourceAccessRequest.Builder().operation(ResourceAccessRequest.Operation.LIST)
135+
.resourceIndex(resourceIndex)
136+
.build();
137+
client.execute(
138+
ResourceAccessAction.INSTANCE,
139+
request,
140+
ActionListener.wrap(response -> { listener.onResponse(response.getResources()); }, listener::onFailure)
141+
);
142+
}
143+
123144
/**
124145
* Helper method for share/revoke to check and return early is resource sharing is disabled
125146
* @param disabledMessage The message to be logged if resource sharing is disabled.

0 commit comments

Comments
 (0)