在 Life ray 中自定义站点管理员角色的权限?

Posted

技术标签:

【中文标题】在 Life ray 中自定义站点管理员角色的权限?【英文标题】:Customize permissions for Site Administrator role in Life ray? 【发布时间】:2015-03-02 15:18:40 【问题描述】:

我想自定义站点管理员角色权限,即,我需要启用一项功能,用于在各个站点下创建用于站点管理的用户。我怎样才能做到这一点?我需要用 Hook 来实现它还是需要创建 EXT?或者任何其他更简单的方法来实现这一点? 我需要在相应站点下启用用户创建并为站点管理员分配权限。我不想通过超级管理员创建用户。

【问题讨论】:

【参考方案1】:

也许您可以创建一个自定义 portlet,将其放在控制面板中,其中只有填写表格的站点管理员可以创建您直接指定为当前站点成员的用户。

专业版: 我认为你可以完成你的任务。

缺点:

您必须花时间进行开发,这不是“点击几下即可解决”。 这不是权限自定义。

参考资料: "Beginning Liferay Development" 这是一个有用的指南,它使用所有 Liferay 最佳实践来解释如何开发一个完整的 portlet,即“著名的”KnowledgeBasePortlet。我建议你通读一遍,但你的问题的重点是:

设置权限,只允许站点管理员创建用户 将 Portlet 添加到控制面板

注意: 正如您将看到的(创建实体操作),KnowledgeBasePortlet 创建了两个自定义实体,您不需要这样做:您需要的实体已经存在。使用that chapter 只是为了了解如何调用方法来添加/编辑/删除该实体,您必须做同样的事情,但通过 UserLocalServiceUtil 使用 User 实体。

【讨论】:

是的,我需要参考 1) 我需要从哪里开始? 2)我可以用钩子实现它/我需要创建新的portlet吗? 我编辑了答案,但是您不必创建挂钩,只需创建一个简单的 portlet。 正如您所建议的,我创建了一个 portlet 并将其添加到“site_administration.users”下的控制面板中。现在如何将创建和编辑用户屏幕导入到 portlet 或者我是否需要创建添加和编辑用户屏幕?请有任何建议【参考方案2】:

我不确定我是否理解您的需求(抱歉,我试图假设)。

如果您已经有不同的网站,并且需要以编程方式创建所有站点管理员用户(一次性),则需要创建一个 portlet(并将其部署为控制面板 portlet)。 你的 portlet 应该只有一个接口来调用一个方法......而你的方法只需要

获取您需要的所有网站(其中尚不存在管理员用户) 创建用户(使用UserLocalServiceUtil) 通过RoleLocalServiceUtil 和UserGroupRoleLocalServiceUtil 为用户分配必要的角色 可以在这里找到一个很好的代码示例:Liferay Forum: How to Programmatically Add Liferay Users in Java

如果您愿意,您的 portlet 可以将此方法公开给 Liferay,而不是使用 UI,而是使用 Liferay cron 作业。 您只需要在 liferay-portlet.xml 中添加一个指向您的代码的声明:watch this simple guide

不同的是,如果您想在每次通过界面创建站点时自动添加用户,您可以使用挂钩并覆盖 DB 上的实体创建事件。 网站位于组表中,因此您可以将servlet.service.events.post 事件处理程序添加到服务事件。 在那里你可以调用你的代码:read this useful post

希望对你有用。

【讨论】:

我需要在我的portlet 中添加什么接口以及如何调用方法。请帮助我从两天内开始尝试,但没有用。请 我不想以编程方式创建用户。我需要从 UI 创建。我创建了一个 portlet 并部署在控制窗格中。 Portlet 具有基本的用户详细信息和保存按钮。单击保存按钮后,用户详细信息应保存在现有用户表中。我在论坛中添加了一个问题,liferay.com/community/forums/-/message_boards/message/51162704。请帮帮我 正如我在回复中所写(和链接)以及论坛中已经建议的那样,您应该使用:UserLocalServiceUtil.addUser()

以上是关于在 Life ray 中自定义站点管理员角色的权限?的主要内容,如果未能解决你的问题,请参考以下文章

Liferay 6.1中如何从用户组继承站点角色权限给他们的成员?

如何评估在 rllib (Ray) 中自定义环境中训练的演员?

允许非站点管理员通过管理员菜单访问清除缓存,Drupal 6

如何在 Django CRUD 中自定义 auth.User 管理页面?

使用 ContainerRequestFilter 在 Jersey WebService 中自定义 @RolesAllowed 角色

Flask—Login中权限(角色)管理的实现方法?