-
Notifications
You must be signed in to change notification settings - Fork 21
Description
Checklist
- I have looked into the README and have not found a suitable solution or answer.
- I have looked into the documentation and have not found a suitable solution or answer.
- I have searched the issues and have not found a suitable solution or answer.
- I have upgraded to the latest version of OpenFGA and the issue still persists.
- I have searched the Slack community and have not found a suitable solution or answer.
- I agree to the terms within the OpenFGA Code of Conduct.
Description
Description
When using the listUsers API to list all users who have the viewer relation on a folder, the response does not include all users that should be inferred through indirect or inherited relationships.
However, using the check API for the same users and relation returns true, which indicates that the relationship is correctly modeled in the store.
var request = new ClientListUsersRequest()
._object(new FgaObject().type("folder").id(id))
.relation("viewer")
.userFilters(List.of(
new UserTypeFilter().type("user")
));
var response = fgaClient.listUsers(request);
Authorization Model
type user
type group
relations
define child: [group]
define member: [user] or member from child
define owner: [user, group#owner] or owner from parent
define parent: [group]
type folder
relations
define can_share: editor
define viewer: [user, group#member] or owner or editor or viewer from parent
define editor: [user, group#member] or owner or editor from parent
define owner: [user, group#owner] or owner from parent
define parent: [folder]
Tutples
user:user1 owner group:1
user:user2 member group:1
group:1#owner owner folder:1
group:1#member editor folder:1
folder:1 parent folder:3
From the model and tuples:
user1 → owner of group:1 → owner of folder:1 → viewer of folder:1 → viewer of folder:3
user2 → member of group:1 → editor of folder:1 → editor of folder:3 → viewer of folder:3
Using check(user2, viewer, folder:3) returns true
But listUsers(folder:3, viewer) does not return user2 (but do have user1)
Reproduction
Expectation
listUsers should return both user1 and user2 since both effectively have the viewer relation on folder:3 via inheritance and group membership.
Reproduction
-
Create the model above.
-
Insert the tuples as shown.
-
Run check for user2 viewer folder:3 → returns true.
-
Run listUsers(folder:3, viewer) → user2 (and possibly user1) missing.
OpenFGA SDK version
0.2.0
OpenFGA version
SDK Configuration
normal setting
Logs
No response
References
No response
Metadata
Metadata
Assignees
Labels
Type
Projects
Status