Skip to content

Commit c5b05dd

Browse files
authored
Add LookupResources example (#158)
1 parent 8d42a53 commit c5b05dd

1 file changed

Lines changed: 65 additions & 0 deletions

File tree

examples/v1/lookup_resources.rb

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
require 'authzed'
2+
3+
# Initialize the client
4+
client = Authzed::Api::V1::Client.new(
5+
target: 'grpc.authzed.com:443',
6+
interceptors: [Authzed::GrpcUtil::BearerToken.new(token: 'mytoken')],
7+
)
8+
9+
# Define the subject (the user we're checking for)
10+
emilia = Authzed::Api::V1::SubjectReference.new(
11+
object: Authzed::Api::V1::ObjectReference.new(
12+
object_type: 'blog/user',
13+
object_id: 'emilia'
14+
)
15+
)
16+
17+
# Create a LookupResources request to find all posts that emilia can read
18+
request = Authzed::Api::V1::LookupResourcesRequest.new(
19+
resource_object_type: 'blog/post',
20+
permission: 'read',
21+
subject: emilia,
22+
consistency: Authzed::Api::V1::Consistency.new(
23+
fully_consistent: true
24+
)
25+
)
26+
27+
# LookupResources returns a streaming response
28+
# Collect all resource IDs into an array
29+
resources = []
30+
31+
puts "Looking up resources that emilia can read..."
32+
33+
client.permissions_service.lookup_resources(request) do |response|
34+
# Each response contains one resource ID
35+
resource_id = response.resource_object_id
36+
resources << resource_id
37+
puts "Found resource: #{resource_id}"
38+
end
39+
40+
puts "\nTotal resources found: #{resources.length}"
41+
puts "Resource IDs: #{resources.join(', ')}"
42+
43+
# You can also look up resources with a specific permission
44+
# For example, find all posts that emilia can write
45+
write_request = Authzed::Api::V1::LookupResourcesRequest.new(
46+
resource_object_type: 'blog/post',
47+
permission: 'write',
48+
subject: emilia,
49+
consistency: Authzed::Api::V1::Consistency.new(
50+
fully_consistent: true
51+
)
52+
)
53+
54+
writable_resources = []
55+
56+
puts "\nLooking up resources that emilia can write..."
57+
58+
client.permissions_service.lookup_resources(write_request) do |response|
59+
resource_id = response.resource_object_id
60+
writable_resources << resource_id
61+
puts "Found writable resource: #{resource_id}"
62+
end
63+
64+
puts "\nTotal writable resources found: #{writable_resources.length}"
65+
puts "Writable resource IDs: #{writable_resources.join(', ')}"

0 commit comments

Comments
 (0)