Проблемы с правами Liferay после перемещения файлов в doc lib

Использование liferay 6.2 api для вставки изображений в библиотеку документов. Код также перемещает изображения из одной папки в другую папку

Но после перемещения изображений их папки не попадают guest view разрешения и изображения не могут быть просмотрены.

У меня есть две группы (сайты) -

  1. GroupA
  2. GroupB

Пользователь GroupA создает папки, вставляет файлы, а также перемещает файлы. Пользователь GroupB должен видеть файлы.

Все папки и файлы создаются в Global scope в библиотеке документов.

public void moveFilesToFolder(final HttpServletRequest request, final List<DLFileEntry> filesToMove, final DLFolder toFolder)
        throws Exception {
    final ServiceContext sc = ServiceContextFactory.getInstance(request);
    sc.setWorkflowAction(WorkflowConstants.STATUS_APPROVED);
    sc.setAddGuestPermissions(true);
    sc.setAddGroupPermissions(true);

    for (final DLFileEntry file : filesToMove) {            
        DLAppServiceUtil.moveFileEntry(file.getFileEntryId(), toFolder.getFolderId(), sc)
    }
    // update folders to have guest permissions
    DLAppLocalServiceUtil.updateFolder(toFolder.getFolderId(), toFolder.getParentFolderId(), toFolder.getName(),
            toFolder.getDescription(), sc);
}

Это не похоже на работу, и гостевые разрешения не установлены для всех пользователей. Странное поведение заключается в том, что когда пользователь, выполнивший операцию перемещения, просматривает разрешения из пользовательского интерфейса, проверяется разрешение просмотра gues, но для любого другого пользователя разрешение не проверяется.

Согласно предложениям ниже, я использовал DLAppServiceUtil переместить файлы. Но это не меняет статус файла на одобренный из черновика.

Также, какой правильный метод использовать для копирования файлов? Там нет метода в DLAppServiceUtil копировать файлы из одной папки в другую

Кто-нибудь знает, как решить эту проблему?

1 ответ

Использование DLAppLocalServiceUtil и DLFileEntryServiceUtil не является правильным способом. Thery обходят обновление разрешений и правильное управление хранилищем.

Вместо этого используйте DLAppServiceUtil для перемещения и обновления.

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