我试图从下拉菜单中隐藏不必要的部分,确切的说是通知,共享内容,我的提交,我的工作流任务等。
我可以通过以下方式删除它们 Control panel -> Users -> Roles -> User -> Permissions
有没有办法通过Hooks或者配置文件来实现同样的结果?
我在运行docker时,使用 liferay/portal:7.3.0-ga1
图像,因此需要在没有GUI的情况下也能实现。
经过各种研究,我想到了这个办法。
private void removePermissions() throws PortalException {
List<String> portletList = Arrays.asList("com_liferay_users_admin_web_portlet_MyOrganizationsPortlet",
"com_liferay_my_account_web_portlet_MyAccountPortlet",
"com_liferay_portal_workflow_web_internal_portlet_UserWorkflowPortlet",
"com_liferay_portal_workflow_task_web_portlet_MyWorkflowTaskPortlet",
"com_liferay_notifications_web_portlet_NotificationsPortlet",
"com_liferay_sharing_web_portlet_SharedAssetsPortlet",
"com_liferay_oauth2_provider_web_internal_portlet_OAuth2ConnectedApplicationsPortlet"
);
String primKey = String.valueOf(company.getPrimaryKey());
for (String portlet : portletList) {
ResourcePermissionLocalServiceUtil.removeResourcePermission(
companyId,
portlet,
ResourceConstants.SCOPE_COMPANY,
primKey,
userRole.getRoleId(),
"ACCESS_IN_CONTROL_PANEL");
}
}
companyId,userRole可以通过RoleLocalServiceUtil和CompanyLocalServiceUtil实现。PrimKey是根据范围不同而不同。本博客 帮助我理解了很多。我在通过GUI删除权限时,通过开发者控制台嗅到了portlet的名字。我还没有找到更干净的解决方案。