Liferay根据角色隐藏网站

时间:2016-07-11 14:21:12

标签: liferay-6

在一个要求中,我需要隐藏一些网站(从右上角菜单),具体取决于用户的角色。

现在,如果用户X无法访问网站ABC,但他仍然可以在右上角的“我的网站”菜单中看到该网站。当他点击它时,他去那里看到消息说你没有被授权。而不是这个,我想隐藏那些用户无法访问的网站。

有没有办法这样做?

2 个答案:

答案 0 :(得分:1)

检查用户是否是网站的成员。如果他不能访问该网站,请不要让他成为会员。右上角的菜单是根据站点成员身份生成的。

答案 1 :(得分:0)

这是[链接],我希望这会对你有帮助,http://findnerd.com/list/view/Hiding-My-Sites-Menu-in-Docbar-in-Liferay/1940/

更新:

您可以通过创建挂钩来隐藏Liferay Docbar中的“我的网站”菜单。在我的示例中,我隐藏了除了角色为Administrator的用户之外的所有用户的菜单选项。你需要钩住html / taglib / ui / my_sites / page.jsp 添加以下代码以检查登录用户是否为管理员角色。

boolean isAdminUser=permissionChecker.isOmniadmin();

因此,如果登录用户是管理员,我们将显示“我的网站”菜单,否则将隐藏它。我在下面的代码中添加了isAdminUser的额外条件。

<c:if test="<%= !mySiteGroups.isEmpty() && isAdminUser %>">

以下是page.jsp

的代码段
<%@ include file="/html/taglib/init.jsp" %>
<%
String[] classNames = (String[])request.getAttribute("liferay-ui:my_sites:classNames");
String cssClass = GetterUtil.getString((String)request.getAttribute("liferay-ui:my_sites:cssClass"));
boolean includeControlPanel = GetterUtil.getBoolean((String)request.getAttribute("liferay-ui:my_sites:includeControlPanel"));
int max = GetterUtil.getInteger((String)request.getAttribute("liferay-ui:my_sites:max"));
if (max <= 0) {
    max = PropsValues.MY_SITES_MAX_ELEMENTS;
}
List<Group> mySiteGroups = user.getMySiteGroups(classNames, includeControlPanel, max);
boolean isAdminUser=permissionChecker.isOmniadmin();
System.out.println("\n\n\n\n\n\n  isAdminUser \n\n\n\n\n\n"+isAdminUser);
%>
<c:if test="<%= !mySiteGroups.isEmpty() && isAdminUser %>">
    <ul class="taglib-my-sites <%= cssClass %>">
        <%
        PortletURL portletURL = new PortletURLImpl(request, PortletKeys.SITE_REDIRECTOR, plid, PortletRequest.ACTION_PHASE);
        portletURL.setParameter("struts_action", "/my_sites/view");
        portletURL.setPortletMode(PortletMode.VIEW);
        portletURL.setWindowState(WindowState.NORMAL);
        for (Group mySiteGroup : mySiteGroups) {
            String escapedSiteName = HtmlUtil.escape(mySiteGroup.getName());
            boolean showPublicSite = mySiteGroup.isShowSite(permissionChecker, false);
            boolean showPrivateSite = mySiteGroup.isShowSite(permissionChecker, true);
        %>