Проблемы с правами Liferay после перемещения файлов в doc lib
Использование liferay 6.2 api для вставки изображений в библиотеку документов. Код также перемещает изображения из одной папки в другую папку
Но после перемещения изображений их папки не попадают guest view
разрешения и изображения не могут быть просмотрены.
У меня есть две группы (сайты) -
- GroupA
- 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 для перемещения и обновления.