将特定用户的Portlet资源权限添加到VIEW自定义portlet PROGRAMMATICY

时间:2015-04-21 15:42:58

标签: permissions liferay

我希望我的自定义portlet能够被特定用户查看,但他们是同一组/站点的所有成员。 即...

用户1:我的自定义Portlet无法查看

管理员:我的自定义portlet是可以查看的

用户2:我的自定义portlet是可查看的

如何将特定用户的Portlet-Resource权限添加到我的Jsp中的PROGRAMATICALLY中查看自定义portlet

这是我的代码..

<%@page import="com.liferay.portal.security.permission.ActionKeys"%>
<%@page import="com.liferay.portal.security.permission.PermissionChecker"%>
<%@page import="com.liferay.portal.model.Permission"%>
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>
<%@ page import="com.liferay.portal.theme.ThemeDisplay" %>
<%@ page import="com.liferay.portal.kernel.util.WebKeys" %>
<%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui" %>
<%@page import="com.liferay.portal.service.RoleLocalServiceUtil"%>
<%@page import="com.liferay.portal.service.UserLocalServiceUtil"%>

<portlet:defineObjects />

<theme:defineObjects/>

<% ThemeDisplay themeDisplay = ThemeDisplay)request.getAttribute(WebKeys.THEME_DISPLAY);
PermissionChecker permissionChecker = themeDisplay.getPermissionChecker();
long companyId = themeDisplay.getCompanyId();
long roleId = RoleLocalServiceUtil.getRole(companyId, "Administrator").getRoleId();
long userId = themeDisplay.getUserId();
UserLocalServiceUtil.hasRoleUser(roleId, userId);

if(permissionChecker.hasPermission(roleId, "com.test.sokbu", 10162, ActionKeys.VIEW)){System.out.println("Ok!");}%>

提前谢谢!

最诚挚的问候,

Cjohn

1 个答案:

答案 0 :(得分:1)

我刚刚关注此链接http://agile-reflections.opnworks.com/2011/07/experimenting-with-liferay-permissions.html和中提琴!它现在正在工作! =)感谢Sir Laurent Gauthier

这是我的样本。

第1步

  • docroot / WEB-INF / src

  • 中创建 resource-actions 文件夹
  • 创建 perm.xml

<?xml version='1.0' encoding='UTF-8'?>
<resource-action-mapping>
  <portlet-resource>
    <portlet-name>permissions</portlet-name>
    <permissions>
      <supports>
        <action-key>VIEW</action-key>
        <!-- <action-key>DELETE</action-key> -->
      </supports>
      <site-member-defaults>
        <!-- <action-key>VIEW</action-key> -->
        <!-- <action-key>DELETE</action-key> -->
      </site-member-defaults>
      <guest-defaults>
        <!-- <action-key>VIEW</action-key> -->
      </guest-defaults>
      <guest-unsupported>
        <action-key>VIEW</action-key>
      </guest-unsupported>
    </permissions>
  </portlet-resource>
</resource-action-mapping>
  • 创建 default.xml
<?xml version="1.0"?>
<resource-action-mapping>
  <resource file="resource-actions/perm.xml" />
</resource-action-mapping>

第2步
- 在 docroot / WEB-INF / src 中创建名为 portlet.properties 的文件 - 插入此.. resource.actions.configs=resource-actions/default.xml

第3步
- 在 liferay-portlet.xml 中的<add-default-resource>true</add-default-resource>标记后插入 </css-class-wrapper>

第4步 在这里,我关注了洛朗爵士的博客。

  • 以Liferay管理员身份在Liferay实例上打开浏览器
  • 创建一个名为&#34的新角色;示例角色&#34;
  • 创建一个名为&#34的新用户;示例用户&#34;并设置用户的密码
  • 分配&#34;示例角色&#34;到新创建的用户
  • 在Liferay实例上打开另一个浏览器,以便拥有不同的会话,以&#34;示例用户&#34;登录并导航到包含此portlet的页面

请注意  每当我对perm.xml进行更改时,我都会重新启动服务器以使更改生效。