如何使用 Alfresco Javascript API 检索每个用户的组列表

问题描述 投票:0回答:3

我对 Alfresco 及其 Javascript API 完全陌生,所以请记住这一点...

我希望能够查看 Alfresco 存储库中每个用户的组列表。

这是我目前的代码:

  var gens = search.luceneSearch("TYPE:\"{http://www.alfresco.org/model/content/1.0}person\"");
  var logFile = space.childByNamePath("log_user_groups.csv");
  if (logFile == null) {
      logFile = space.createFile("log_user_groups.csv");
   }
   logFile.content = "";



   for (var i=0; i<gens.length;i++) {
     logFile.content += gens[i].properties["cm:userName"]+"\n";

     var groupes= people.getContainerGroups(gens[i]);

     for (var j=0; j<groupes.length;j++) {
       logFile.content += "\t"+groupes[j].properties.shortName +"\t";
       logFile.content += "\t"+groupes[j].properties.fullName +"\t";
       logFile.content += "\t"+groupes[j].properties.displayName +"\n";
     }
  }

文件已创建,用户名正确显示。但是,组属性“shortName”、“fullName”和“displayName”均为空。事实上,我打印出了“groupes”对象的所有属性,并且该对象的每个字段都是“未定义”。

有人知道我做错了什么吗?

任何帮助将不胜感激。

正常。

javascript-framework alfresco
3个回答
0
投票

最简单的方法就是扭转局面。相反,对于每个组,询问它包含哪些组和哪些用户。最后,翻转它。

您需要从根组开始。 Alfresco 中的

groups
JS 对象将为您提供这些以及其他内容。它是由
ScriptAuthorityService
实现的,因此您可能需要查看 JavaDocs

首先,获取根组

var rootGroups = groups.getAllRootGroups() ;

对于每个组,使用

getAllUsers()
获取组中的所有用户(直接用户和继承用户),并将其存储在某处。现在,获取所有带有
getChildGroups()
的子组。以相同的方式处理每一个,并根据需要进行递归。


0
投票

我需要类似的东西(完整的组列表),所以我这样做了:

var temp = [];

function addGroups (groups)
  {
    for each (group in groups)
      {
        temp.push(group.getDisplayName());
        addGroups(group.getChildGroups());
      }
  }

addGroups(groups.getAllRootGroups());

这在一定程度上是有效的。问题是 getDisplayName() 返回一个非常不漂亮的组名称。通常,在处理文档并显示与用户关联的组名称时,我会执行 people.getContainerGroups() 并使用 group.properties["cm:authorityName"] 来获取可显示的名称(如上所述),但是我收到的组getAllRootGroups() 没有属性(group.properties 未定义)。

有谁知道为什么以这种方式返回的组列表不会具有与 people.getContainerGroups() 返回的属性相同的属性?


0
投票

我猜您使用了错误的属性名称。

您需要以下内容:

  • 全名:
    groupes[j].properties["usr:authorityName"]
  • 显示名称:
    groupes[j].properties["usr:authorityDisplayName"]
  • 简称:我不知道:)也许
    groupes[j].properties["usr:authorityShortName"]

您也可以只获取 NodeRef id。

然后登录 Alfresco 浏览器。然后进入管理控制台 --> 节点浏览器

粘贴id(应该类似于

workspace://spacesStore//biglongUUID
)。在那里你可以看到与该组相关的所有属性。

或者您可以循环

groupes[k].properties
地图并打印所有属性。

© www.soinside.com 2019 - 2024. All rights reserved.