in ees_network_drive/enterprise_search_wrapper.py [0:0]
def add_permissions(self, user_name, permission_list):
"""Add one or more permission for a given user. Permissions are added atop the existing.
:param user_name: user to assign permissions
:param permission_list: list of permissions
"""
try:
if self.version >= ENTERPRISE_V8:
from elastic_enterprise_search.exceptions import ConflictError
external_user_properties = [
{
"attribute_name": "_elasticsearch_username",
"attribute_value": user_name,
}
]
try:
self.workplace_search_client.create_external_identity(
content_source_id=self.ws_source,
external_user_id=user_name,
external_user_properties=external_user_properties,
permissions=permission_list,
)
except ConflictError:
self.logger.debug(
f"External entity :{user_name} already exits. Trying to update the existing permissions.."
)
self.workplace_search_client.put_external_identity(
content_source_id=self.ws_source,
external_user_id=user_name,
external_user_properties=external_user_properties,
permissions=permission_list,
)
else:
self.workplace_search_client.add_user_permissions(
content_source_id=self.ws_source,
user=user_name,
body={"permissions": permission_list},
)
self.logger.info(
f"Successfully indexed the permissions for user {user_name} to the workplace"
)
except Exception as exception:
self.logger.exception(
f"Error while indexing the permissions for user: {user_name} to the workplace. Error: {exception}"
)