Felix Medina
08/13/2024, 4:43 PM[...]
// Define the resource types and permissions you want to check
resourcePermissions := map[string][]string{
"telecom26_boss/document": {"view", "edit", "manage"},
"telecom26_boss/account": {"view", "manage"},
"telecom26_boss/billing_group": {"view", "manage"},
}
// Iterate over the resource types and permissions to find the resources Alice has permissions on
for resourceType, permissions := range resourcePermissions {
for _, permission := range permissions {
// Use LookupResources to find all resources of this type that Alice has the permission on
response, err := client.LookupResources(context.TODO(), &v1.LookupResourcesRequest{
ResourceObjectType: resourceType,
Permission: permission,
Subject: subject,
})
if err != nil {
log.Printf("Error looking up resources for permission %s on %s: %v", permission, resourceType, err)
continue
}
// Print out the resources Alice has this permission on
for _, resourceID := range response.ResourceIds {
fmt.Printf("Alice has %s permission on %s:%s\n", permission, resourceType, resourceID)
}
}
}
Performance-wise, what's the impact of this approach? Is there a more efficient way to retrieve all permissions for a given entity?
Thank you for your assistance.
Best regards,
Felix