code: def share(self, project, to_user, force_send, auth_role, user_message):
          
          if self._is_current_user(to_user):
              raise ShareWithSelfError(SHARE_WITH_SELF_MESSAGE.format("share"))
          if not to_user.email:
              self._raise_user_missing_email_exception("share")
          self.set_user_project_permission(project, to_user, auth_role)
          return self._share_project(D4S2Api.SHARE_DESTINATION, project, to_user, force_send, auth_role, user_message)
docs: Send mail and give user specified access to the project.
          :param project: RemoteProject project to share
          :param to_user: RemoteUser user to receive email/access
          :param auth_role: str project role eg 'project_admin' to give to the user
          :param user_message: str message to be sent with the share
          :return: str email we share the project with