in connectors/sharepoint/sharepoint_data_reader.py [0:0]
def _get_read_access_entities(permissions):
"""
Extracts user IDs and group names of entities with read access from the given permissions data.
:param permissions: List of permission dictionaries.
:return: List of entities (user IDs and group names/IDs) with read access.
"""
read_access_entities = []
for permission in permissions:
if not isinstance(permission, dict) or "roles" not in permission:
continue
if any(role in permission.get("roles", []) for role in ["read", "write"]):
# Process grantedToIdentitiesV2 for individual users
identities_v2 = permission.get("grantedToIdentitiesV2", [])
for identity in identities_v2:
user = identity.get("user", {})
user_id = user.get("id")
if user_id and user_id not in read_access_entities:
read_access_entities.append(user_id)
# Process grantedToIdentities for individual users
identities = permission.get("grantedToIdentities", [])
for identity in identities:
user = identity.get("user", {})
user_id = user.get("id")
if user_id and user_id not in read_access_entities:
read_access_entities.append(user_id)
# Process grantedToV2 for groups
groups = permission.get("grantedToV2", {}).get("siteGroup", {})
group_name = groups.get(
"displayName"
) # or groups.get('id') for group ID
if group_name and group_name not in read_access_entities:
read_access_entities.append(group_name)
return read_access_entities