我试图从下拉菜单中隐藏不必要的部分。准确地说是通知、共享内容、我的提交、我的工作流程任务等。
我能够通过
Control panel -> Users -> Roles -> User -> Permissions
有没有办法通过 Hooks 或通过配置文件来实现相同的结果?
我用图像运行 docker,liferay/portal:7.3.0-ga1
因此需要能够在没有 GUI 的情况下实现这一点。
我试图从下拉菜单中隐藏不必要的部分。准确地说是通知、共享内容、我的提交、我的工作流程任务等。
我能够通过
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 的名称。我还没有找到更清洁的解决方案。