如何在 liferay 7.3.6 中将用户和组织作为 portlet

问题描述

我正在尝试将“用户和组织”用作 portlet。

我已经按照 this outdated (6.x) article 中提到的方法进行了尝试,但没有奏效。

解决方法

这完全可以在没有任何代码的情况下完成,但您需要进行大量配置。

portlet 是一个 OSGi 组件。首先,弄清楚实现类。 URL 给出了一个提示,因为它包含 com_liferay_users_admin_web_portlet_UsersAdminPortlet。然而,在这种情况下,这只是关键。 Grep 源代码,或使用任何其他方式查找它的使用位置,然后您将到达 com.liferay.users.admin.web.internal.portlet.UsersAdminPortlet。如果你查看它的属性配置,你会发现这一行

"com.liferay.portlet.display-category=category.hidden",

如果您猜测这就是 portlet 不能用于任何页面的原因:您是对的。

现在,任何 OSGi 声明式服务的属性都可以通过创建一个配置文件来更改,您可以将其放入 Liferay 的部署文件夹(或直接放入 osgi/configs,如果您愿意)。

因此,使用单行内容创建一个名为 com.liferay.users.admin.web.internal.portlet.UsersAdminPortlet.config 的文件

com.liferay.portlet.display-category="category.sample"

你已经准备好了。

但是,常规权限检查可能非常严格,您应该非常清楚,打开这些权限很容易打开安全漏洞(想象一下有人创建了完整的管理员帐户,或将现有帐户变成了管理帐户)

一个更好的方法可能是有选择地只提供适当的权限来操作这个 portlet,并在 ControlPanel 中提供对它的访问,而不用打开其他所有东西。这是常规角色和权限配置的一部分,也不需要任何代码行。