Удаление разрешения из роли в Liferay 7.3

Я пытаюсь скрыть ненужные части из выпадающего меню. Если быть точным, уведомления, общий контент, мои материалы, мои задачи рабочего процесса и т. Д.

Мне удалось удалить их через Control panel -> Users -> Roles -> User -> Permissions

Есть ли способ добиться того же результата с помощью хуков или файла конфигурации?

Я запускаю докер с liferay/portal:7.3.0-ga1 image и, следовательно, необходимо иметь возможность достичь этого без графического интерфейса.

1 ответ

После различных исследований я пришел к следующему:

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 отличается в зависимости от области применения, этот блог очень помог мне понять это. Я обнюхивал имена портлетов через консоль разработчика при удалении разрешений через графический интерфейс. Я не нашел более чистого решения.

Другие вопросы по тегам