groovy - 如何获取 Liferay 6.2 站点的用户列表
问题描述
我正在尝试获取 Liferay 6.2 站点的用户列表,但我似乎找不到这样做的方法。我有 groupId,我知道这是正确的,因为我可以获取文档,但查询只能获取直接添加的用户,而不是继承的用户(例如来自组织的用户)。
我只是使用方法UserLocalService.getGroupUsers(groupId)
,然后遍历它们。如何获得所有用户(即与站点管理中的站点成员身份相同,但没有分页)?
更新
我有一个 Liferay 门户实例,它有几个具有关联站点的组织。组织 A 具有用户 1、2、3 等。组织 B 具有用户 4、5、6。他们具有相同的公司 ID(因为它们属于同一门户),但组 ID 不同。我只想要那些在 Org A 中的人(直接添加,已分配的任何用户组或组织的一部分)。该站点也可以是非组织站点(即分配的组织 A 和 B,但不是任何其他站点,例如新的组织 C),用于组织之间的文档共享。据我了解,所有站点在内部都称为组,与文档库一起工作。
解决方案
您可以进行两次调用来获取站点和组织用户,然后调用一次来获取分配的组织,遍历它们并获取他们的用户。然后结合所有结果:
HashSet<User> groupAndOrganizationUsersSet = new LinkedHashSet<>();
groupAndOrganizationUsersSet.addAll(UserLocalServiceUtil.getGroupUsers(groupId));
groupAndOrganizationUsersSet.addAll(UserLocalServiceUtil.getOrganizationUsers(
GroupLocalServiceUtil.getGroup(groupId).getOrganizationId()));
for (Organization organization :
OrganizationLocalServiceUtil.getGroupOrganizations(groupId)) {
groupAndOrganizationUsersSet.addAll(UserLocalServiceUtil.getOrganizationUsers(
organization.getOrganizationId()));
}
List<User> groupAndOrganizationUsers = new ArrayList<>(groupAndOrganizationUsersSet);
推荐阅读
- heroku - 如何从 url 路径/子目录部署 heroku 应用程序——而不是 url 根目录?
- python - 如何将非 ASCII 字符打印到文件中?
- javascript - 使用替换方法在nodejs中添加多个空格字符
- linux - 如何在设备树中编写覆盖 pin_define 的覆盖?
- android - Flutter:向状态栏添加活动/进度指示器
- c# - MemoryStream 没有将所有预期的内容写入文件
- android - 为什么我需要在 android 中使用 ViewModelFactory?
- html - 使用子元素旋转容器
- list - 在 LaTeX 中同时遍历多个“列表”
- python - 如何有效地浏览和比较一个非常大的字典的值与列表的元素?