Using groupsApi
JavaScript
x
5
1
async function getGroupUserList(groupId) => {
2
const groupResult = await alfrescoApi.core.groupsApi.getGroupMembers(groupId);
3
console.log(groupId + ', # users: ' + groupResult.list.entries.length);
4
return groupResult.list.entries;
5
}
Using Search PATH
JavaScript
1
6
1
async function getGroupUserList(groupId) {
2
const query = `PATH:'/sys:system/sys:authorities/cm:GROUP_${groupId}/*'`;
3
const groupResult = await search(query);
4
console.log(groupId + ', # users: ' + groupResult.list.entries.length);
5
return groupResult.list.entries;
6
}
Using Search ANCESTOR
JavaScript
1
8
1
async function getGroupUserList(groupId) {
2
const authoritiesParentNode = await this.searchAndExpectOneNode(`PATH:'/sys:system/sys:authorities/cm:GROUP_${groupId}'`);
3
const query = `ANCESTOR:'workspace://SpacesStore/${authoritiesParentNode.entry.id}'`;
4
const searchResult = await this.search(query);
5
const groupResult = searchResult.list.entries.filter(oneNode => oneNode.entry.nodeType === 'cm:person');
6
console.log('# users: ' + groupResult.length);
7
return groupResult;
8
}
As follows, there are some methods required to support the previous methods
JavaScript
1
38
38
1
const AlfrescoApi = require('alfresco-js-api-node');
2
const alfrescoApi = new AlfrescoApi({hostEcm: 'your-host'});
3
4
// make sure to login on alfresco to use the API
5
6
async function searchAndExpectOneNode(query, displayError) => {
7
const searchResult = this.search(query);
8
9
if (searchResult.list.entries.length > 1) {
10
if (displayError) {
11
console.error('found multiple elements with query', query);
12
13
} else if (searchResult.list.entries.length === 1) {
14
return searchResult.list.entries[0];
15
16
} else {
17
return null;
18
}
19
}
20
}
21
22
function search(query, size = 500, skipCount = 0) => {
23
// adding cm:name:* forces alfresco to use Solr, to make sure we retrieve totalItems
24
return alfrescoApi.search.searchApi.search(getQueryBody(query + ' AND cm:name:*', size, skipCount));
25
}
26
27
function getQueryBody(query, size = 500, skipCount = 0) {
28
return {
29
query: {
30
query: query
31
},
32
include: ['properties'],
33
paging: {
34
maxItems: size,
35
skipCount: skipCount
36
}
37
};
38
}