node-ldap/lib/utilities/custom_groups.js

45 lines
938 B
JavaScript

const {
parseFilter,
} = require('ldapjs');
const {
getProviderLDAPEntries,
} = require('./provider');
const {
makeGroupEntry,
addMemberToGroup,
} = require('./ldap');
const {
customGroups,
} = require('../config');
function getLDAPCustomGroupEntries() {
if (!customGroups) {
return [];
}
const baseGroupEntry = makeGroupEntry('ou=CustomGroups', 'CustomGroups', []);
const allEntries = getProviderLDAPEntries();
const groupEntries = customGroups.map(g => {
const groupEntry = makeGroupEntry(`ou=${g.name},ou=CustomGroups`, g.name, []);
addMemberToGroup(groupEntry, baseGroupEntry);
const members = allEntries.filter(o => {
return g.members.indexOf(o.attributes.mail) >= 0;
});
members.forEach(p => {
addMemberToGroup(p, groupEntry);
});
return groupEntry;
});
return [].concat(baseGroupEntry, groupEntries);
}
module.exports = {
getLDAPCustomGroupEntries,
};