在doc lib中移动文件后出现Liferay权限问题

时间:2015-07-13 06:05:36

标签: java liferay liferay-6.2

使用liferay 6.2 api在文档库中插入图像。该代码还将图像从一个文件夹移动到另一个文件夹

但移动图片后,他们的文件夹无法获得guest view权限,无法查看图片。

我有两个小组(网站) -

  1. A组
  2. 组B
  3. 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);
    }
    

    这似乎不起作用,并且没有为所有用户设置访客权限。奇怪的行为是,当执行移动操作的用户查看来自UI的权限时,将检查提示视图权限,但是对于任何其他用户,不会检查权限。

    根据以下建议,我使用DLAppServiceUtil来移动文件。但它并没有改变文件的状态到草案批准。

    使用复制文件的正确方法是什么? DLAppServiceUtil中没有方法可以将文件从一个文件夹复制到另一个文件夹

    有人知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

使用DLAppLocalServiceUtil和DLFileEntryServiceUtil不是正确的方法。 Thery绕过权限更新和正确的存储库管理。

使用 DLAppServiceUtil 代替移动和更新。