如何在Liferay中的自定义Portlet中启用讨论(注释)权限

时间:2015-02-18 16:06:55

标签: permissions liferay-6 portlet

我之前已经意识到这个问题,但似乎并不是一个完整的答案,所以我会询问具体细节和尝试过的内容。在其他论坛中,它也被多次询问,没有答案,也没有完整的细节。

我已经能够使用' liferay-ui:discussion'添加评论(讨论)到我的自定义portlet。 Liferay中的taglib 6.1.20在搜索之后,我终于使用以下设置使其工作:

JSP页面

<portlet:actionURL 
            var="discussionURL"
            name="addDiscussion"/>

        <liferay-ui:discussion
            className="<%= Announcement.class.getName() %>"
            classPK="<%= announcement.getPrimaryKey() %>"
            formAction="<%= discussionURL %>"
            formName="fm2"
            ratingsEnabled="<%= false %>"
            redirect="<%= currentURL %>"
            subject="<%= announcement.getHeadline() %>"
            userId="<%= themeDisplay.getUserId() %>"
        />

Portlet类

注意:类扩展了MVCPortlet

public void addDiscussion(ActionRequest actionRequest, ActionResponse actionResponse){  
    try {           
        //invokeTaglibDiscussion(actionRequest, actionResponse);
        PortletActionInvoker.processAction("com.liferay.portlet.messageboards.action.EditDiscussionAction", null, actionRequest, actionResponse);
    } catch (Exception e) {  
        _log.error("There was an Error adding a comment to the Announcement");
    }  
}

由于类扩展了MVCPortlet,我尝试使用 invokeTagLibDiscussion ,但没有更改权限结果。这来自 Liferay In Action 一书(这是一个很好的信息来源)。所以我尝试使用许多文章中提到的 PortletActionInvoker.processAction 方法。

问题

所以,现在我已经在我的自定义portlet中添加了一个工作讨论,但事实证明任何人可以编辑任何其他个人以前的评论。显然,我无法启动具有该安全问题的portlet。再次进一步研究,我发现了以下答案&#39; ...

  • 向资源操作文件Add Permissions添加权限。这似乎是最有希望的,因为Liferay代码将以这种方式利用权限系统。我觉得有趣的是为什么没有这个主题的教程/ bood提到使用 DELETE_DISCUSSION UPDATE_DISCUSSION 权限。 (即Liferay Wiki Article)无论哪种方式,即使这个问题的所有者表明它为他们做了这件事,这也无法解决我的问题。
  • 另一个发布的答案&#39;表示只需将权限添加到特定角色&#39;在控制面板中。他们不仅没有提供任何有关如何实现这一目标的细节,而且它没有任何意义,因为这些许可操作不会出现在portlet中。

非常感谢任何帮助,因为这是我的自定义portlet项目的最后一个组件,阻碍了我将它发布到我的用户组。

提前致谢。

0 个答案:

没有答案