添加特定用户的 Portlet 资源权限以编程方式查看自定义 portlet
ADD PortletResource permission for specific users to VIEW custom portlet PROGRAMATICALLY
我希望我的自定义 portlet 可以被特定用户查看,但他们都是相同的成员 GROUP/SITE。
即...
用户 1:我的自定义 Portlet 不可查看
管理员:我的自定义 portlet 可以查看
用户 2:我的自定义 portlet 可以查看
如何为特定用户添加 Portlet-Resource 权限以在我的 Jsp 中以编程方式查看自定义 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!");}%>
提前致谢!
此致,
约翰
我刚刚关注了这个 link http://agile-reflections.opnworks.com/2011/07/experimenting-with-liferay-permissions.html 和中提琴!它现在工作了! =) 感谢 Laurent Gauthier
爵士
这是我的样本。
第 1 步
在 docroot/WEB-INF/src[=71 中创建一个 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[=60= 中创建一个名为 portlet.properties 的文件]
- 插入这个.. resource.actions.configs=resource-actions/default.xml
第 3 步
- 在 liferay-[=110 中的 </css-class-wrapper>
标签后插入 <add-default-resource>true</add-default-resource>
=]。
第 4 步
在这里,我关注了 Sir Laurent 的博客上的内容..
- 以 Liferay 管理员身份在您的 Liferay 实例上打开浏览器
- 创建一个名为 "Example Role" 的新角色
- 创建一个名为 "Example User" 的新用户并设置用户密码
- 将 "Example Role" 分配给新创建的用户
- 在您的 Liferay 实例上打开不同的浏览器以进行不同的会话,以 "Example User" 身份登录并导航到包含此 portlet 的页面
请注意
每当我在 perm.xml 中进行更改时,我都会重新启动服务器以使更改生效。
我希望我的自定义 portlet 可以被特定用户查看,但他们都是相同的成员 GROUP/SITE。 即...
用户 1:我的自定义 Portlet 不可查看
管理员:我的自定义 portlet 可以查看
用户 2:我的自定义 portlet 可以查看
如何为特定用户添加 Portlet-Resource 权限以在我的 Jsp 中以编程方式查看自定义 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!");}%>
提前致谢!
此致,
约翰
我刚刚关注了这个 link http://agile-reflections.opnworks.com/2011/07/experimenting-with-liferay-permissions.html 和中提琴!它现在工作了! =) 感谢 Laurent Gauthier
爵士这是我的样本。
第 1 步
在 docroot/WEB-INF/src[=71 中创建一个 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[=60= 中创建一个名为 portlet.properties 的文件]
- 插入这个.. resource.actions.configs=resource-actions/default.xml
第 3 步
- 在 liferay-[=110 中的 </css-class-wrapper>
标签后插入 <add-default-resource>true</add-default-resource>
=]。
第 4 步 在这里,我关注了 Sir Laurent 的博客上的内容..
- 以 Liferay 管理员身份在您的 Liferay 实例上打开浏览器
- 创建一个名为 "Example Role" 的新角色
- 创建一个名为 "Example User" 的新用户并设置用户密码
- 将 "Example Role" 分配给新创建的用户
- 在您的 Liferay 实例上打开不同的浏览器以进行不同的会话,以 "Example User" 身份登录并导航到包含此 portlet 的页面
请注意 每当我在 perm.xml 中进行更改时,我都会重新启动服务器以使更改生效。