2015-07-13 96 views
0

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

但移动图像后,其文件夹没有得到guest view权限和图像无法查看。

我有两个组(站点) -

  1. A组
  2. B族

A组用户创建的文件夹,文件插入,也移动文件。 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的权限时,将检查gues查看权限,但是对于任何其他用户,不会检查权限。

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

另外什么是用于复制文件的正确方法? DLAppServiceUtil没有办法将文件从一个文件夹复制到另一个文件夹

任何人都知道如何解决这个问题?

+0

如果Daniele的回答没有帮助(因为您还没有接受):您正在使用哪个版本? –

+0

上面已经提到liferay 6.2 – Coder

+0

对不起,没有足够确切的问题:我一直在寻找确切的版本,例如“CE GA4”? GA3中有几个许可问题可能需要排除 - 它们导致访客查看权限丢失。 –

回答

0

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

使用DLAppServiceUtil改为移动和更新。

+0

为什么它不正确? – Coder

+0

通常,DLAppServiceUtil类正确管理权限设置。这是真实的,特别是创建一个新的文件条目。 使用'''DLAppServiceUtil.moveFileEntry'''来移动文件。 –

+0

我已经使用DLAPPServiceUtil,但文件状态没有更新到已批准。它保持为草案 – Coder